From cd34ee693f91b85862005f647711c5fd268602c3 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Mon, 4 May 2026 16:19:28 +0100 Subject: [PATCH] No logs --- server-rs/logs/server.log.2026-02-19 | 522 ------- server-rs/logs/server.log.2026-03-15 | 1192 ---------------- server-rs/logs/server.log.2026-03-17 | 335 ----- server-rs/logs/server.log.2026-04-04 | 1958 -------------------------- server-rs/logs/server.log.2026-05-04 | 1315 ----------------- 5 files changed, 5322 deletions(-) delete mode 100644 server-rs/logs/server.log.2026-02-19 delete mode 100644 server-rs/logs/server.log.2026-03-15 delete mode 100644 server-rs/logs/server.log.2026-03-17 delete mode 100644 server-rs/logs/server.log.2026-04-04 delete mode 100644 server-rs/logs/server.log.2026-05-04 diff --git a/server-rs/logs/server.log.2026-02-19 b/server-rs/logs/server.log.2026-02-19 deleted file mode 100644 index 22dedda..0000000 --- a/server-rs/logs/server.log.2026-02-19 +++ /dev/null @@ -1,522 +0,0 @@ -2026-02-19T21:26:54.458535Z INFO property_map_server: Prometheus metrics initialized -2026-02-19T21:26:54.458730Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-02-19T21:26:54.458738Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-02-19T21:26:54.560667Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-02-19T21:26:54.560677Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-02-19T21:27:01.536771Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-02-19T21:27:01.536788Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-02-19T21:27:01.858493Z INFO property_map_server::data::property: buy listings joined rows=444605 -2026-02-19T21:27:01.858503Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-02-19T21:27:01.970421Z INFO property_map_server::data::property: rent listings joined rows=125656 -2026-02-19T21:27:01.970430Z INFO property_map_server::data::property: Concatenating all data sources -2026-02-19T21:27:52.277322Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=444605 rent_listings=125656 total=15773642 -2026-02-19T21:27:52.277425Z INFO property_map_server::data::property: Feature columns from config numeric=55 enums=12 total=67 -2026-02-19T21:27:53.590317Z INFO property_map_server::data::property: Combined data selected rows=15773642 -2026-02-19T21:27:53.731832Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-02-19T21:27:58.340459Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-02-19T21:27:59.454079Z INFO property_map_server::data::property: Extracting string columns -2026-02-19T21:28:01.589530Z INFO property_map_server::data::property: Building enum features -2026-02-19T21:29:17.412343Z INFO property_map_server::data::property: Extracting renovation history -2026-02-19T21:29:19.625773Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829807 -2026-02-19T21:29:19.625780Z INFO property_map_server::data::property: Extracting listing features -2026-02-19T21:29:21.764449Z INFO property_map_server::data::property: Listing features extracted properties_with_features=508871 -2026-02-19T21:29:21.764457Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-02-19T21:29:28.223647Z INFO property_map_server::data::property: Building interned strings -2026-02-19T21:30:05.730665Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted) -2026-02-19T21:32:02.361349Z INFO property_map_server::data::property: Data loading complete -2026-02-19T21:32:03.976002Z INFO property_map_server: Property data loaded rows=15773642 features=67 enums=12 -2026-02-19T21:32:03.976011Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-02-19T21:32:04.076953Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-02-19T21:32:04.076963Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-02-19T21:32:04.487571Z INFO property_map_server::data::property: H3 precomputation complete (15773642 cells) -2026-02-19T21:32:04.490452Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-02-19T21:32:04.490466Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-02-19T21:32:04.740771Z INFO property_map_server::data::poi: Loaded 811937 POIs -2026-02-19T21:32:04.865428Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-02-19T21:32:04.866050Z INFO property_map_server::data::poi: POI data loading complete. -2026-02-19T21:32:04.896188Z INFO property_map_server: POI data loaded pois=811937 -2026-02-19T21:32:04.896196Z INFO property_map_server: Building POI spatial grid index -2026-02-19T21:32:04.903631Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-02-19T21:32:04.908488Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-02-19T21:32:04.916283Z INFO property_map_server::data::places: Loaded 90807 places -2026-02-19T21:32:04.951763Z INFO property_map_server::data::places: Place data loaded places=90807 types=11 with_population=2112 with_city=87577 -2026-02-19T21:32:04.952866Z INFO property_map_server: Place data loaded places=90807 -2026-02-19T21:32:04.952882Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-02-19T21:32:04.952983Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-02-19T21:32:04.956401Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-02-19T21:32:07.669253Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-02-19T21:32:07.669264Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-02-19T21:32:07.669278Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-02-19T21:32:07.677413Z INFO property_map_server: PMTiles loaded successfully -2026-02-19T21:32:07.729382Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-02-19T21:32:07.792213Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-02-19T21:32:07.792458Z INFO property_map_server: Precomputed features response groups=9 -2026-02-19T21:32:07.792535Z INFO property_map_server: Precomputed AI filters schema and system prompt -2026-02-19T21:32:07.796454Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-02-19T21:32:13.118788Z INFO property_map_server::pocketbase: PocketBase users collection already has is_admin, subscription, and newsletter fields -2026-02-19T21:32:13.169893Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-02-19T21:32:13.169910Z INFO property_map_server::pocketbase: PocketBase collection 'invites' already exists -2026-02-19T21:32:13.169913Z INFO property_map_server::pocketbase: PocketBase collection 'short_urls' already exists -2026-02-19T21:32:13.230971Z WARN property_map_server::pocketbase: PocketBase settings missing oauth2.providers array — cannot configure OAuth -2026-02-19T21:32:13.230981Z INFO property_map_server: Ollama configured: http://host.docker.internal:11434 (model: gpt-oss:20b) -2026-02-19T21:32:13.230992Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-02-19T21:32:13.251928Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=76039 -2026-02-19T21:32:13.272182Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=76039 -2026-02-19T21:32:13.291900Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=69290 -2026-02-19T21:32:13.291945Z INFO property_map_server: Travel time store loaded modes=3 -2026-02-19T21:32:13.296486Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-02-19T21:32:14.023023Z INFO property_map_server::routes::features: GET /api/features -2026-02-19T21:32:16.790595Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 cells_before_filter=687 cells_after_filter=687 truncated=false bounds=47.0000,-14.0000,57.0000,10.0000 filters=0 filters_raw="-" travel_entries=0 agg_ms=1729.5 total_ms=1748.8 -2026-02-19T21:32:23.004683Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-02-19T21:32:24.013755Z INFO property_map_server::routes::features: GET /api/features -2026-02-19T21:32:24.013792Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-02-19T21:32:25.049834Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=10 cells_before_filter=1419 cells_after_filter=1259 truncated=false bounds=51.4908,-0.1363,51.5292,-0.0637 filters=0 filters_raw="-" travel_entries=0 agg_ms=11.2 total_ms=38.8 -2026-02-19T21:36:25.033898Z INFO property_map_server: Prometheus metrics initialized -2026-02-19T21:36:25.034069Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-02-19T21:36:25.034079Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-02-19T21:36:25.129912Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-02-19T21:36:25.129921Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-02-19T21:36:32.499133Z INFO property_map_server: Prometheus metrics initialized -2026-02-19T21:36:32.499319Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-02-19T21:36:32.499330Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-02-19T21:36:32.558294Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-02-19T21:36:32.558304Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-02-19T21:36:34.752324Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-02-19T21:36:34.752339Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-02-19T21:36:35.020717Z INFO property_map_server::data::property: buy listings joined rows=444605 -2026-02-19T21:36:35.020727Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-02-19T21:36:35.117921Z INFO property_map_server::data::property: rent listings joined rows=125656 -2026-02-19T21:36:35.117931Z INFO property_map_server::data::property: Concatenating all data sources -2026-02-19T21:38:50.238928Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=444605 rent_listings=125656 total=15773642 -2026-02-19T21:38:50.239009Z INFO property_map_server::data::property: Feature columns from config numeric=55 enums=12 total=67 -2026-02-19T21:38:51.489522Z INFO property_map_server::data::property: Combined data selected rows=15773642 -2026-02-19T21:38:51.661991Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-02-19T21:39:38.714760Z INFO property_map_server: Prometheus metrics initialized -2026-02-19T21:39:38.714936Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-02-19T21:39:38.714944Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-02-19T21:39:38.790493Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-02-19T21:39:38.790504Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-02-19T21:39:41.014520Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-02-19T21:39:41.014538Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-02-19T21:39:41.299979Z INFO property_map_server::data::property: buy listings joined rows=444605 -2026-02-19T21:39:41.299990Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-02-19T21:39:41.400048Z INFO property_map_server::data::property: rent listings joined rows=125656 -2026-02-19T21:39:41.400059Z INFO property_map_server::data::property: Concatenating all data sources -2026-02-19T21:39:47.989385Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=444605 rent_listings=125656 total=15773642 -2026-02-19T21:39:47.989481Z INFO property_map_server::data::property: Feature columns from config numeric=55 enums=12 total=67 -2026-02-19T21:39:49.243773Z INFO property_map_server::data::property: Combined data selected rows=15773642 -2026-02-19T21:39:49.422488Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-02-19T21:39:54.408464Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-02-19T21:39:55.491023Z INFO property_map_server::data::property: Extracting string columns -2026-02-19T21:39:57.641424Z INFO property_map_server::data::property: Building enum features -2026-02-19T21:40:09.935990Z INFO property_map_server::data::property: Extracting renovation history -2026-02-19T21:40:12.074163Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829807 -2026-02-19T21:40:12.074172Z INFO property_map_server::data::property: Extracting listing features -2026-02-19T21:40:12.681574Z INFO property_map_server::data::property: Listing features extracted properties_with_features=508871 -2026-02-19T21:40:12.681588Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-02-19T21:40:18.238722Z INFO property_map_server::data::property: Building interned strings -2026-02-19T21:40:24.556588Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted) -2026-02-19T21:40:52.861550Z INFO property_map_server::data::property: Data loading complete -2026-02-19T21:40:54.156096Z INFO property_map_server: Property data loaded rows=15773642 features=67 enums=12 -2026-02-19T21:40:54.156105Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-02-19T21:40:54.550391Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-02-19T21:40:54.550401Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-02-19T21:40:54.950194Z INFO property_map_server::data::property: H3 precomputation complete (15773642 cells) -2026-02-19T21:40:54.950226Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-02-19T21:40:54.950233Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-02-19T21:40:54.970688Z INFO property_map_server::data::poi: Loaded 811937 POIs -2026-02-19T21:40:55.091891Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-02-19T21:40:55.092505Z INFO property_map_server::data::poi: POI data loading complete. -2026-02-19T21:40:55.122637Z INFO property_map_server: POI data loaded pois=811937 -2026-02-19T21:40:55.122650Z INFO property_map_server: Building POI spatial grid index -2026-02-19T21:40:55.132909Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-02-19T21:40:55.132919Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-02-19T21:40:55.135615Z INFO property_map_server::data::places: Loaded 90807 places -2026-02-19T21:40:55.155573Z INFO property_map_server::data::places: Place data loaded places=90807 types=11 with_population=2112 with_city=87577 -2026-02-19T21:40:55.157182Z INFO property_map_server: Place data loaded places=90807 -2026-02-19T21:40:55.157198Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-02-19T21:40:55.157202Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-02-19T21:40:55.169027Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-02-19T21:40:56.700286Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-02-19T21:40:56.700297Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-02-19T21:40:56.700310Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-02-19T21:40:56.711874Z INFO property_map_server: PMTiles loaded successfully -2026-02-19T21:40:56.767004Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-02-19T21:40:56.793907Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-02-19T21:40:56.794046Z INFO property_map_server: Precomputed features response groups=9 -2026-02-19T21:40:56.794089Z INFO property_map_server: Precomputed AI filters schema and system prompt -2026-02-19T21:40:56.794100Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-02-19T21:40:56.883854Z INFO property_map_server::pocketbase: PocketBase users collection already has is_admin, subscription, and newsletter fields -2026-02-19T21:40:56.887425Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-02-19T21:40:56.887435Z INFO property_map_server::pocketbase: PocketBase collection 'invites' already exists -2026-02-19T21:40:56.887438Z INFO property_map_server::pocketbase: PocketBase collection 'short_urls' already exists -2026-02-19T21:40:56.936330Z WARN property_map_server::pocketbase: PocketBase settings missing oauth2.providers array — cannot configure OAuth -2026-02-19T21:40:56.936343Z INFO property_map_server: Ollama configured: http://host.docker.internal:11434 (model: gpt-oss:20b) -2026-02-19T21:40:56.936362Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-02-19T21:40:57.078090Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=76039 -2026-02-19T21:40:57.241363Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=76039 -2026-02-19T21:40:57.424132Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=69290 -2026-02-19T21:40:57.424164Z INFO property_map_server: Travel time store loaded modes=3 -2026-02-19T21:40:57.424333Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-02-19T21:45:48.088981Z INFO property_map_server: Prometheus metrics initialized -2026-02-19T21:45:48.089157Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-02-19T21:45:48.089163Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-02-19T21:45:48.151222Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-02-19T21:45:48.151231Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-02-19T21:45:50.419725Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-02-19T21:45:50.419740Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-02-19T21:45:50.680792Z INFO property_map_server::data::property: buy listings joined rows=444605 -2026-02-19T21:45:50.680801Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-02-19T21:45:50.790235Z INFO property_map_server::data::property: rent listings joined rows=125656 -2026-02-19T21:45:50.790245Z INFO property_map_server::data::property: Concatenating all data sources -2026-02-19T21:45:59.531271Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=444605 rent_listings=125656 total=15773642 -2026-02-19T21:45:59.531351Z INFO property_map_server::data::property: Feature columns from config numeric=55 enums=12 total=67 -2026-02-19T21:46:00.677779Z INFO property_map_server::data::property: Combined data selected rows=15773642 -2026-02-19T21:46:00.823682Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-02-19T21:46:11.566611Z INFO property_map_server: Prometheus metrics initialized -2026-02-19T21:46:11.566786Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-02-19T21:46:11.566792Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-02-19T21:46:11.644730Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-02-19T21:46:11.644739Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-02-19T21:46:17.296113Z INFO property_map_server: Prometheus metrics initialized -2026-02-19T21:46:17.296298Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-02-19T21:46:17.296309Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-02-19T21:46:17.355178Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-02-19T21:46:17.355187Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-02-19T21:46:19.508288Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-02-19T21:46:19.508307Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-02-19T21:46:19.775415Z INFO property_map_server::data::property: buy listings joined rows=444605 -2026-02-19T21:46:19.775424Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-02-19T21:46:19.877913Z INFO property_map_server::data::property: rent listings joined rows=125656 -2026-02-19T21:46:19.877923Z INFO property_map_server::data::property: Concatenating all data sources -2026-02-19T21:46:22.229279Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=444605 rent_listings=125656 total=15773642 -2026-02-19T21:46:22.229352Z INFO property_map_server::data::property: Feature columns from config numeric=55 enums=12 total=67 -2026-02-19T21:46:23.385234Z INFO property_map_server::data::property: Combined data selected rows=15773642 -2026-02-19T21:46:23.566673Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-02-19T21:46:28.957436Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-02-19T21:46:34.625853Z INFO property_map_server: Prometheus metrics initialized -2026-02-19T21:46:34.626033Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-02-19T21:46:34.626039Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-02-19T21:46:34.683165Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-02-19T21:46:34.683174Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-02-19T21:46:39.619046Z INFO property_map_server: Prometheus metrics initialized -2026-02-19T21:46:39.619206Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-02-19T21:46:39.619211Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-02-19T21:46:39.682402Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-02-19T21:46:39.682412Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-02-19T21:46:41.896969Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-02-19T21:46:41.896985Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-02-19T21:46:42.158027Z INFO property_map_server::data::property: buy listings joined rows=444605 -2026-02-19T21:46:42.158037Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-02-19T21:46:42.256671Z INFO property_map_server::data::property: rent listings joined rows=125656 -2026-02-19T21:46:42.256682Z INFO property_map_server::data::property: Concatenating all data sources -2026-02-19T21:46:44.596786Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=444605 rent_listings=125656 total=15773642 -2026-02-19T21:46:44.596858Z INFO property_map_server::data::property: Feature columns from config numeric=55 enums=12 total=67 -2026-02-19T21:46:45.729422Z INFO property_map_server::data::property: Combined data selected rows=15773642 -2026-02-19T21:46:45.884768Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-02-19T21:46:51.133252Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-02-19T21:46:52.129246Z INFO property_map_server::data::property: Extracting string columns -2026-02-19T21:46:54.247724Z INFO property_map_server::data::property: Building enum features -2026-02-19T21:47:06.556048Z INFO property_map_server::data::property: Extracting renovation history -2026-02-19T21:47:08.635978Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829807 -2026-02-19T21:47:08.635986Z INFO property_map_server::data::property: Extracting listing features -2026-02-19T21:47:09.231804Z INFO property_map_server::data::property: Listing features extracted properties_with_features=508871 -2026-02-19T21:47:09.231812Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-02-19T21:47:14.793765Z INFO property_map_server::data::property: Building interned strings -2026-02-19T21:47:21.074369Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted) -2026-02-19T21:47:49.305297Z INFO property_map_server::data::property: Data loading complete -2026-02-19T21:47:50.726389Z INFO property_map_server: Property data loaded rows=15773642 features=67 enums=12 -2026-02-19T21:47:50.726398Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-02-19T21:47:50.825433Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-02-19T21:47:50.825442Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-02-19T21:47:51.183337Z INFO property_map_server::data::property: H3 precomputation complete (15773642 cells) -2026-02-19T21:47:51.183366Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-02-19T21:47:51.183377Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-02-19T21:47:51.239629Z INFO property_map_server::data::poi: Loaded 811937 POIs -2026-02-19T21:47:51.358287Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-02-19T21:47:51.358921Z INFO property_map_server::data::poi: POI data loading complete. -2026-02-19T21:47:51.389530Z INFO property_map_server: POI data loaded pois=811937 -2026-02-19T21:47:51.389537Z INFO property_map_server: Building POI spatial grid index -2026-02-19T21:47:51.397611Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-02-19T21:47:51.397621Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-02-19T21:47:51.404147Z INFO property_map_server::data::places: Loaded 90807 places -2026-02-19T21:47:51.422097Z INFO property_map_server::data::places: Place data loaded places=90807 types=11 with_population=2112 with_city=87577 -2026-02-19T21:47:51.423272Z INFO property_map_server: Place data loaded places=90807 -2026-02-19T21:47:51.423286Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-02-19T21:47:51.423293Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-02-19T21:47:51.427524Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-02-19T21:47:52.459962Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-02-19T21:47:52.459974Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-02-19T21:47:52.459991Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-02-19T21:47:52.460299Z INFO property_map_server: PMTiles loaded successfully -2026-02-19T21:47:52.509697Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-02-19T21:47:52.548802Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-02-19T21:47:52.548955Z INFO property_map_server: Precomputed features response groups=9 -2026-02-19T21:47:52.548998Z INFO property_map_server: Precomputed AI filters schema and system prompt -2026-02-19T21:47:52.549010Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-02-19T21:47:52.651249Z INFO property_map_server::pocketbase: PocketBase users collection already has is_admin, subscription, and newsletter fields -2026-02-19T21:47:52.657303Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-02-19T21:47:52.657312Z INFO property_map_server::pocketbase: PocketBase collection 'invites' already exists -2026-02-19T21:47:52.657314Z INFO property_map_server::pocketbase: PocketBase collection 'short_urls' already exists -2026-02-19T21:47:52.699918Z WARN property_map_server::pocketbase: PocketBase settings missing oauth2.providers array — cannot configure OAuth -2026-02-19T21:47:52.699928Z INFO property_map_server: Ollama configured: http://host.docker.internal:11434 (model: gpt-oss:20b) -2026-02-19T21:47:52.699941Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-02-19T21:47:52.776587Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=76039 -2026-02-19T21:47:52.892688Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=76039 -2026-02-19T21:47:52.988301Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=69290 -2026-02-19T21:47:52.988332Z INFO property_map_server: Travel time store loaded modes=3 -2026-02-19T21:47:52.988500Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-02-19T21:51:21.780285Z INFO property_map_server: Prometheus metrics initialized -2026-02-19T21:51:21.780462Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-02-19T21:51:21.780471Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-02-19T21:51:21.851737Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-02-19T21:51:21.851746Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-02-19T21:51:24.076503Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-02-19T21:51:24.076522Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-02-19T21:51:24.334934Z INFO property_map_server::data::property: buy listings joined rows=444605 -2026-02-19T21:51:24.334944Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-02-19T21:51:24.438503Z INFO property_map_server::data::property: rent listings joined rows=125656 -2026-02-19T21:51:24.438513Z INFO property_map_server::data::property: Concatenating all data sources -2026-02-19T21:51:35.892299Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=444605 rent_listings=125656 total=15773642 -2026-02-19T21:51:35.892405Z INFO property_map_server::data::property: Feature columns from config numeric=55 enums=12 total=67 -2026-02-19T21:51:36.985627Z INFO property_map_server::data::property: Combined data selected rows=15773642 -2026-02-19T21:51:37.144498Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-02-19T21:51:42.441195Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-02-19T21:51:43.421336Z INFO property_map_server::data::property: Extracting string columns -2026-02-19T21:51:45.512575Z INFO property_map_server::data::property: Building enum features -2026-02-19T21:51:57.729162Z INFO property_map_server::data::property: Extracting renovation history -2026-02-19T21:51:59.870295Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829807 -2026-02-19T21:51:59.870303Z INFO property_map_server::data::property: Extracting listing features -2026-02-19T21:52:00.496544Z INFO property_map_server::data::property: Listing features extracted properties_with_features=508871 -2026-02-19T21:52:00.496553Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-02-19T21:52:05.810063Z INFO property_map_server::data::property: Building interned strings -2026-02-19T21:52:12.478733Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted) -2026-02-19T21:52:57.041288Z INFO property_map_server::data::property: Data loading complete -2026-02-19T21:52:58.190166Z INFO property_map_server: Property data loaded rows=15773642 features=67 enums=12 -2026-02-19T21:52:58.190227Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-02-19T21:52:58.612625Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-02-19T21:52:58.612634Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-02-19T21:52:59.010323Z INFO property_map_server::data::property: H3 precomputation complete (15773642 cells) -2026-02-19T21:52:59.010352Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-02-19T21:52:59.010357Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-02-19T21:52:59.033154Z INFO property_map_server::data::poi: Loaded 811937 POIs -2026-02-19T21:52:59.168962Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-02-19T21:52:59.169620Z INFO property_map_server::data::poi: POI data loading complete. -2026-02-19T21:52:59.200062Z INFO property_map_server: POI data loaded pois=811937 -2026-02-19T21:52:59.200069Z INFO property_map_server: Building POI spatial grid index -2026-02-19T21:52:59.209004Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-02-19T21:52:59.209026Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-02-19T21:52:59.217593Z INFO property_map_server::data::places: Loaded 90807 places -2026-02-19T21:52:59.237507Z INFO property_map_server::data::places: Place data loaded places=90807 types=11 with_population=2112 with_city=87577 -2026-02-19T21:52:59.238659Z INFO property_map_server: Place data loaded places=90807 -2026-02-19T21:52:59.238673Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-02-19T21:52:59.238677Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-02-19T21:52:59.239461Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-02-19T21:53:00.577770Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-02-19T21:53:00.577784Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-02-19T21:53:00.577800Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-02-19T21:53:00.578044Z INFO property_map_server: PMTiles loaded successfully -2026-02-19T21:53:00.635812Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-02-19T21:53:00.661112Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-02-19T21:53:00.661276Z INFO property_map_server: Precomputed features response groups=9 -2026-02-19T21:53:00.661327Z INFO property_map_server: Precomputed AI filters schema and system prompt -2026-02-19T21:53:00.661341Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-02-19T21:53:00.777123Z INFO property_map_server::pocketbase: PocketBase users collection already has is_admin, subscription, and newsletter fields -2026-02-19T21:53:00.780442Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-02-19T21:53:00.780453Z INFO property_map_server::pocketbase: PocketBase collection 'invites' already exists -2026-02-19T21:53:00.780455Z INFO property_map_server::pocketbase: PocketBase collection 'short_urls' already exists -2026-02-19T21:53:00.827713Z WARN property_map_server::pocketbase: PocketBase settings missing oauth2.providers array — cannot configure OAuth -2026-02-19T21:53:00.827728Z INFO property_map_server: Ollama configured: http://host.docker.internal:11434 (model: gpt-oss:20b) -2026-02-19T21:53:00.827756Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-02-19T21:53:00.853494Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=76039 -2026-02-19T21:53:00.875117Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=76039 -2026-02-19T21:53:00.897287Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=69290 -2026-02-19T21:53:00.897342Z INFO property_map_server: Travel time store loaded modes=3 -2026-02-19T21:53:00.897521Z WARN property_map_server: mlockall failed (need CAP_IPC_LOCK or sufficient RLIMIT_MEMLOCK): Cannot allocate memory (os error 12) -2026-02-19T21:53:00.897564Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-02-19T21:53:43.607361Z INFO property_map_server: Prometheus metrics initialized -2026-02-19T21:53:43.607524Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-02-19T21:53:43.607533Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-02-19T21:53:43.703745Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-02-19T21:53:43.703756Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-02-19T21:53:46.126315Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-02-19T21:53:46.126336Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-02-19T21:53:46.404697Z INFO property_map_server::data::property: buy listings joined rows=444605 -2026-02-19T21:53:46.404708Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-02-19T21:53:46.508191Z INFO property_map_server::data::property: rent listings joined rows=125656 -2026-02-19T21:53:46.508203Z INFO property_map_server::data::property: Concatenating all data sources -2026-02-19T21:54:04.815379Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=444605 rent_listings=125656 total=15773642 -2026-02-19T21:54:04.815453Z INFO property_map_server::data::property: Feature columns from config numeric=55 enums=12 total=67 -2026-02-19T21:54:05.957615Z INFO property_map_server::data::property: Combined data selected rows=15773642 -2026-02-19T21:54:06.114182Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-02-19T21:54:11.113430Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-02-19T21:54:12.014906Z INFO property_map_server::data::property: Extracting string columns -2026-02-19T21:54:14.114892Z INFO property_map_server::data::property: Building enum features -2026-02-19T21:54:26.216628Z INFO property_map_server::data::property: Extracting renovation history -2026-02-19T21:54:28.295021Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829807 -2026-02-19T21:54:28.295030Z INFO property_map_server::data::property: Extracting listing features -2026-02-19T21:54:28.894967Z INFO property_map_server::data::property: Listing features extracted properties_with_features=508871 -2026-02-19T21:54:28.894975Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-02-19T21:54:34.492548Z INFO property_map_server::data::property: Building interned strings -2026-02-19T21:54:40.775643Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted) -2026-02-19T21:55:09.150090Z INFO property_map_server::data::property: Data loading complete -2026-02-19T21:55:10.482353Z INFO property_map_server: Property data loaded rows=15773642 features=67 enums=12 -2026-02-19T21:55:10.482362Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-02-19T21:55:10.579983Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-02-19T21:55:10.579992Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-02-19T21:55:10.931346Z INFO property_map_server::data::property: H3 precomputation complete (15773642 cells) -2026-02-19T21:55:10.931371Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-02-19T21:55:10.931376Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-02-19T21:55:10.956383Z INFO property_map_server::data::poi: Loaded 811937 POIs -2026-02-19T21:55:11.076557Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-02-19T21:55:11.077176Z INFO property_map_server::data::poi: POI data loading complete. -2026-02-19T21:55:11.107885Z INFO property_map_server: POI data loaded pois=811937 -2026-02-19T21:55:11.107892Z INFO property_map_server: Building POI spatial grid index -2026-02-19T21:55:11.115230Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-02-19T21:55:11.115239Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-02-19T21:55:11.117955Z INFO property_map_server::data::places: Loaded 90807 places -2026-02-19T21:55:11.135514Z INFO property_map_server::data::places: Place data loaded places=90807 types=11 with_population=2112 with_city=87577 -2026-02-19T21:55:11.136623Z INFO property_map_server: Place data loaded places=90807 -2026-02-19T21:55:11.136637Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-02-19T21:55:11.136641Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-02-19T21:55:11.138240Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-02-19T21:55:12.410370Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-02-19T21:55:12.410381Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-02-19T21:55:12.410398Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-02-19T21:55:12.410625Z INFO property_map_server: PMTiles loaded successfully -2026-02-19T21:55:12.462925Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-02-19T21:55:12.494298Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-02-19T21:55:12.494439Z INFO property_map_server: Precomputed features response groups=9 -2026-02-19T21:55:12.494482Z INFO property_map_server: Precomputed AI filters schema and system prompt -2026-02-19T21:55:12.494496Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-02-19T21:55:12.541473Z INFO property_map_server::pocketbase: PocketBase users collection already has is_admin, subscription, and newsletter fields -2026-02-19T21:55:12.543245Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-02-19T21:55:12.543253Z INFO property_map_server::pocketbase: PocketBase collection 'invites' already exists -2026-02-19T21:55:12.543255Z INFO property_map_server::pocketbase: PocketBase collection 'short_urls' already exists -2026-02-19T21:55:12.586588Z WARN property_map_server::pocketbase: PocketBase settings missing oauth2.providers array — cannot configure OAuth -2026-02-19T21:55:12.586599Z INFO property_map_server: Ollama configured: http://host.docker.internal:11434 (model: gpt-oss:20b) -2026-02-19T21:55:12.586612Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-02-19T21:55:12.608664Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=76039 -2026-02-19T21:55:12.629502Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=76039 -2026-02-19T21:55:12.648844Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=69290 -2026-02-19T21:55:12.648881Z INFO property_map_server: Travel time store loaded modes=3 -2026-02-19T21:55:12.649064Z WARN property_map_server: mlockall failed (need CAP_IPC_LOCK or sufficient RLIMIT_MEMLOCK): Cannot allocate memory (os error 12) -2026-02-19T21:55:12.649102Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-02-19T21:56:27.019313Z INFO property_map_server: Prometheus metrics initialized -2026-02-19T21:56:27.019464Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-02-19T21:56:27.019473Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-02-19T21:56:27.077642Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-02-19T21:56:27.077651Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-02-19T21:56:29.376382Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-02-19T21:56:29.376400Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-02-19T21:56:29.643314Z INFO property_map_server::data::property: buy listings joined rows=444605 -2026-02-19T21:56:29.643325Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-02-19T21:56:29.750729Z INFO property_map_server::data::property: rent listings joined rows=125656 -2026-02-19T21:56:29.750740Z INFO property_map_server::data::property: Concatenating all data sources -2026-02-19T21:56:36.764563Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=444605 rent_listings=125656 total=15773642 -2026-02-19T21:56:36.764643Z INFO property_map_server::data::property: Feature columns from config numeric=55 enums=12 total=67 -2026-02-19T21:56:37.882852Z INFO property_map_server::data::property: Combined data selected rows=15773642 -2026-02-19T21:56:38.041464Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-02-19T21:56:43.567623Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-02-19T21:56:44.547629Z INFO property_map_server::data::property: Extracting string columns -2026-02-19T21:56:46.638073Z INFO property_map_server::data::property: Building enum features -2026-02-19T21:56:58.743576Z INFO property_map_server::data::property: Extracting renovation history -2026-02-19T21:57:00.886254Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829807 -2026-02-19T21:57:00.886263Z INFO property_map_server::data::property: Extracting listing features -2026-02-19T21:57:01.500069Z INFO property_map_server::data::property: Listing features extracted properties_with_features=508871 -2026-02-19T21:57:01.500077Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-02-19T21:57:07.085398Z INFO property_map_server::data::property: Building interned strings -2026-02-19T21:57:13.333355Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted) -2026-02-19T21:57:42.416818Z INFO property_map_server::data::property: Data loading complete -2026-02-19T21:57:43.429909Z INFO property_map_server: Property data loaded rows=15773642 features=67 enums=12 -2026-02-19T21:57:43.429917Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-02-19T21:57:43.809875Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-02-19T21:57:43.809884Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-02-19T21:57:44.161951Z INFO property_map_server::data::property: H3 precomputation complete (15773642 cells) -2026-02-19T21:57:44.161990Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-02-19T21:57:44.161997Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-02-19T21:57:44.184832Z INFO property_map_server::data::poi: Loaded 811937 POIs -2026-02-19T21:57:44.303890Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-02-19T21:57:44.304500Z INFO property_map_server::data::poi: POI data loading complete. -2026-02-19T21:57:44.335104Z INFO property_map_server: POI data loaded pois=811937 -2026-02-19T21:57:44.335113Z INFO property_map_server: Building POI spatial grid index -2026-02-19T21:57:44.342807Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-02-19T21:57:44.342817Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-02-19T21:57:44.345902Z INFO property_map_server::data::places: Loaded 90807 places -2026-02-19T21:57:44.365611Z INFO property_map_server::data::places: Place data loaded places=90807 types=11 with_population=2112 with_city=87577 -2026-02-19T21:57:44.368113Z INFO property_map_server: Place data loaded places=90807 -2026-02-19T21:57:44.368128Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-02-19T21:57:44.368133Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-02-19T21:57:44.368931Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-02-19T21:57:45.407981Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-02-19T21:57:45.407992Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-02-19T21:57:45.408009Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-02-19T21:57:45.408231Z INFO property_map_server: PMTiles loaded successfully -2026-02-19T21:57:45.458216Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-02-19T21:57:45.483167Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-02-19T21:57:45.483325Z INFO property_map_server: Precomputed features response groups=9 -2026-02-19T21:57:45.483362Z INFO property_map_server: Precomputed AI filters schema and system prompt -2026-02-19T21:57:45.483372Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-02-19T21:57:45.527603Z INFO property_map_server::pocketbase: PocketBase users collection already has is_admin, subscription, and newsletter fields -2026-02-19T21:57:45.529274Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-02-19T21:57:45.529282Z INFO property_map_server::pocketbase: PocketBase collection 'invites' already exists -2026-02-19T21:57:45.529284Z INFO property_map_server::pocketbase: PocketBase collection 'short_urls' already exists -2026-02-19T22:00:02.316188Z INFO property_map_server: Prometheus metrics initialized -2026-02-19T22:00:02.316363Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-02-19T22:00:02.316376Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-02-19T22:00:02.374613Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-02-19T22:00:02.374622Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-02-19T22:00:04.644372Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-02-19T22:00:04.644386Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-02-19T22:00:04.911541Z INFO property_map_server::data::property: buy listings joined rows=444605 -2026-02-19T22:00:04.911554Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-02-19T22:00:05.012469Z INFO property_map_server::data::property: rent listings joined rows=125656 -2026-02-19T22:00:05.012480Z INFO property_map_server::data::property: Concatenating all data sources -2026-02-19T22:00:22.135033Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=444605 rent_listings=125656 total=15773642 -2026-02-19T22:00:22.135120Z INFO property_map_server::data::property: Feature columns from config numeric=55 enums=12 total=67 -2026-02-19T22:00:23.338993Z INFO property_map_server::data::property: Combined data selected rows=15773642 -2026-02-19T22:00:23.510508Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-02-19T22:00:28.484323Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-02-19T22:00:29.357751Z INFO property_map_server::data::property: Extracting string columns -2026-02-19T22:00:31.494852Z INFO property_map_server::data::property: Building enum features -2026-02-19T22:00:43.668748Z INFO property_map_server::data::property: Extracting renovation history -2026-02-19T22:00:45.723371Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829807 -2026-02-19T22:00:45.723379Z INFO property_map_server::data::property: Extracting listing features -2026-02-19T22:00:46.332508Z INFO property_map_server::data::property: Listing features extracted properties_with_features=508871 -2026-02-19T22:00:46.332517Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-02-19T22:00:51.842163Z INFO property_map_server::data::property: Building interned strings -2026-02-19T22:00:57.978323Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted) -2026-02-19T22:01:26.614095Z INFO property_map_server::data::property: Data loading complete -2026-02-19T22:01:27.675542Z INFO property_map_server: Property data loaded rows=15773642 features=67 enums=12 -2026-02-19T22:01:27.675552Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-02-19T22:01:28.060580Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-02-19T22:01:28.060590Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-02-19T22:01:28.424039Z INFO property_map_server::data::property: H3 precomputation complete (15773642 cells) -2026-02-19T22:01:28.424101Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-02-19T22:01:28.424183Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-02-19T22:01:28.448672Z INFO property_map_server::data::poi: Loaded 811937 POIs -2026-02-19T22:01:28.566180Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-02-19T22:01:28.566791Z INFO property_map_server::data::poi: POI data loading complete. -2026-02-19T22:01:28.596675Z INFO property_map_server: POI data loaded pois=811937 -2026-02-19T22:01:28.596685Z INFO property_map_server: Building POI spatial grid index -2026-02-19T22:01:28.603824Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-02-19T22:01:28.603830Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-02-19T22:01:28.606465Z INFO property_map_server::data::places: Loaded 90807 places -2026-02-19T22:01:28.623823Z INFO property_map_server::data::places: Place data loaded places=90807 types=11 with_population=2112 with_city=87577 -2026-02-19T22:01:28.624990Z INFO property_map_server: Place data loaded places=90807 -2026-02-19T22:01:28.625002Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-02-19T22:01:28.625006Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-02-19T22:01:28.637363Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-02-19T22:01:29.656030Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-02-19T22:01:29.656042Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-02-19T22:01:29.656058Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-02-19T22:01:29.656288Z INFO property_map_server: PMTiles loaded successfully -2026-02-19T22:01:29.705260Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-02-19T22:01:29.738938Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-02-19T22:01:29.739087Z INFO property_map_server: Precomputed features response groups=9 -2026-02-19T22:01:29.739137Z INFO property_map_server: Precomputed AI filters schema and system prompt -2026-02-19T22:01:29.739149Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-02-19T22:01:29.786529Z INFO property_map_server::pocketbase: PocketBase users collection already has is_admin, subscription, and newsletter fields -2026-02-19T22:01:29.788719Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-02-19T22:01:29.788726Z INFO property_map_server::pocketbase: PocketBase collection 'invites' already exists -2026-02-19T22:01:29.788728Z INFO property_map_server::pocketbase: PocketBase collection 'short_urls' already exists diff --git a/server-rs/logs/server.log.2026-03-15 b/server-rs/logs/server.log.2026-03-15 deleted file mode 100644 index 2c7e6dd..0000000 --- a/server-rs/logs/server.log.2026-03-15 +++ /dev/null @@ -1,1192 +0,0 @@ -2026-03-15T19:07:11.371851Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T19:07:11.372040Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T19:07:11.372050Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T19:07:11.473120Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T19:07:11.473130Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T19:07:22.441464Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T19:07:22.441476Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T19:07:22.848304Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T19:07:22.848315Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T19:07:22.913269Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T19:07:22.913279Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T19:07:33.981737Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=474965 rent_listings=24345 total=15702691 -2026-03-15T19:07:33.981832Z INFO property_map_server::data::property: Feature columns from config numeric=54 enums=13 total=67 -2026-03-15T19:07:35.443457Z INFO property_map_server::data::property: Combined data selected rows=15702691 -2026-03-15T19:07:35.594896Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-03-15T19:07:36.004267Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-03-15T19:07:37.616212Z INFO property_map_server::data::property: Extracting string columns -2026-03-15T19:07:39.772016Z INFO property_map_server::data::property: Building enum features -2026-03-15T19:07:41.167109Z INFO property_map_server::data::property: Extracting renovation history -2026-03-15T19:07:49.922117Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829807 -2026-03-15T19:07:49.922128Z INFO property_map_server::data::property: Extracting listing features -2026-03-15T19:07:50.511333Z INFO property_map_server::data::property: Listing features extracted properties_with_features=412749 -2026-03-15T19:07:50.511342Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-03-15T19:07:51.475798Z INFO property_map_server::data::property: Building interned strings -2026-03-15T19:07:57.644399Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-03-15T19:08:00.205219Z INFO property_map_server::data::property: Data loading complete -2026-03-15T19:08:01.951719Z INFO property_map_server: Property data loaded rows=15702691 features=67 enums=13 -2026-03-15T19:08:01.951728Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-03-15T19:08:02.049262Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-03-15T19:08:02.049271Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-03-15T19:08:02.477049Z INFO property_map_server::data::property: H3 precomputation complete (15702691 cells) -2026-03-15T19:08:02.477606Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-03-15T19:08:02.477614Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-03-15T19:08:02.501985Z INFO property_map_server::data::poi: Loaded 678242 POIs -2026-03-15T19:08:02.612770Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-03-15T19:08:02.613426Z INFO property_map_server::data::poi: POI data loading complete. -2026-03-15T19:08:02.652324Z INFO property_map_server: POI data loaded pois=678242 -2026-03-15T19:08:02.652334Z INFO property_map_server: Building POI spatial grid index -2026-03-15T19:08:02.658355Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-03-15T19:08:02.658366Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-03-15T19:08:02.660009Z INFO property_map_server::data::places: Loaded 3474 places -2026-03-15T19:08:02.660839Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-03-15T19:08:02.660901Z INFO property_map_server: Place data loaded places=3474 -2026-03-15T19:08:02.660910Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-03-15T19:08:02.660914Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-03-15T19:08:02.664216Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-03-15T19:08:04.225988Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-03-15T19:08:04.225999Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-03-15T19:08:04.226018Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-03-15T19:08:04.265284Z INFO property_map_server: PMTiles loaded successfully -2026-03-15T19:08:04.310151Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-03-15T19:08:04.343659Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-03-15T19:08:04.343821Z INFO property_map_server: Precomputed features response groups=9 -2026-03-15T19:08:04.343836Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-03-15T19:08:04.432857Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-03-15T19:08:04.438796Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-03-15T19:08:04.443153Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-03-15T19:08:04.727071Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfectpostcodes.schmelczer.dev/pb -2026-03-15T19:08:04.742347Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-03-15T19:08:04.742398Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-03-15T19:08:04.742414Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-03-15T19:08:04.783484Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2780 -2026-03-15T19:08:04.784506Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=350 -2026-03-15T19:08:04.785961Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=355 -2026-03-15T19:08:04.794234Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=1849 -2026-03-15T19:08:04.794259Z INFO property_map_server: Travel time store loaded modes=4 -2026-03-15T19:08:04.794312Z INFO property_map_server: Precomputed AI filters system prompt -2026-03-15T19:08:07.250052Z INFO property_map_server: All memory pages locked (mlockall) -2026-03-15T19:08:07.250147Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-03-15T19:08:43.332953Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=905 cells_after_filter=904 truncated=false bounds=50.5989,-1.9210,52.4537,1.7355 filters=1 filters_raw="Listing status:For rent" travel_entries=0 agg_ms=70.2 total_ms=82.4 -2026-03-15T19:08:44.121660Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1337 cells_after_filter=1335 truncated=false bounds=50.5989,-1.9210,52.4537,1.7355 filters=2 filters_raw="Listing status:For sale;;Asking price:23297.51:inf" travel_entries=0 agg_ms=68.3 total_ms=84.2 -2026-03-15T19:08:45.206450Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1337 cells_after_filter=1335 truncated=false bounds=50.5989,-1.9210,52.4537,1.7355 filters=2 filters_raw="Listing status:For sale;;Asking price:23297.51:inf" travel_entries=0 agg_ms=71.1 total_ms=94.8 -2026-03-15T19:08:45.422613Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1356 cells_after_filter=1351 truncated=false bounds=50.5989,-1.9210,52.4537,1.7355 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=1077.7 total_ms=1109.0 -2026-03-15T19:08:47.208854Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1337 cells_after_filter=1335 truncated=false bounds=50.5989,-1.9210,52.4537,1.7355 filters=2 filters_raw="Listing status:For sale;;Asking price:23297.51:inf" travel_entries=0 agg_ms=68.0 total_ms=79.9 -2026-03-15T19:08:47.294458Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1356 cells_after_filter=1351 truncated=false bounds=50.5989,-1.9210,52.4537,1.7355 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=1074.4 total_ms=1104.8 -2026-03-15T19:08:48.178659Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=905 cells_after_filter=904 truncated=false bounds=50.5989,-1.9210,52.4537,1.7355 filters=1 filters_raw="Listing status:For rent" travel_entries=0 agg_ms=79.6 total_ms=86.6 -2026-03-15T19:08:48.443812Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1337 cells_after_filter=1335 truncated=false bounds=50.5989,-1.9210,52.4537,1.7355 filters=2 filters_raw="Listing status:For sale;;Asking price:23297.51:inf" travel_entries=0 agg_ms=71.5 total_ms=83.5 -2026-03-15T19:08:51.505423Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=86195dac7ffffff resolution=6 total_count=602 filters=2 filters_raw="Listing status:For sale;;Asking price:23297.51:inf" ms=1.0 -2026-03-15T19:08:52.293946Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1004 cells_after_filter=1004 truncated=false bounds=50.5989,-1.3279,52.4537,1.1425 filters=2 filters_raw="Listing status:For sale;;Asking price:23297.51:inf" travel_entries=0 agg_ms=55.5 total_ms=64.3 -2026-03-15T19:09:12.606611Z INFO property_map_server::routes::properties: GET /api/hexagon-properties h3=86195dac7ffffff resolution=6 total=602 returned=100 offset=0 filters=2 filters_raw="Listing status:For sale;;Asking price:23297.51:inf" ms=1.4 -2026-03-15T19:09:17.589934Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=86195dac7ffffff resolution=6 total_count=25877 filters=1 filters_raw="Listing status:Historical sale" ms=12.0 -2026-03-15T19:09:19.152498Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1021 cells_after_filter=1017 truncated=false bounds=50.5989,-1.3279,52.4537,1.1425 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=944.3 total_ms=960.2 -2026-03-15T19:09:19.587280Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=86195dac7ffffff resolution=6 total_count=602 filters=2 filters_raw="Listing status:For sale;;Asking price:23297.51:inf" ms=1.0 -2026-03-15T19:09:20.120819Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1004 cells_after_filter=1004 truncated=false bounds=50.5989,-1.3279,52.4537,1.1425 filters=2 filters_raw="Listing status:For sale;;Asking price:23297.51:inf" travel_entries=0 agg_ms=59.6 total_ms=68.9 -2026-03-15T19:09:21.757704Z INFO property_map_server::routes::properties: GET /api/hexagon-properties h3=86195dac7ffffff resolution=6 total=602 returned=100 offset=0 filters=2 filters_raw="Listing status:For sale;;Asking price:23297.51:inf" ms=1.3 -2026-03-15T19:09:26.458314Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=86195dac7ffffff resolution=6 total_count=25877 filters=1 filters_raw="Listing status:Historical sale" ms=12.2 -2026-03-15T19:09:26.734420Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=86195dac7ffffff resolution=6 total_count=602 filters=2 filters_raw="Listing status:For sale;;Asking price:23297.51:inf" ms=1.1 -2026-03-15T19:09:27.270779Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1004 cells_after_filter=1004 truncated=false bounds=50.5989,-1.3279,52.4537,1.1425 filters=2 filters_raw="Listing status:For sale;;Asking price:23297.51:inf" travel_entries=0 agg_ms=59.2 total_ms=68.7 -2026-03-15T19:09:27.465769Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=86195dac7ffffff resolution=6 total_count=29 filters=1 filters_raw="Listing status:For rent" ms=1.5 -2026-03-15T19:09:27.551401Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1021 cells_after_filter=1017 truncated=false bounds=50.5989,-1.3279,52.4537,1.1425 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=938.9 total_ms=955.1 -2026-03-15T19:09:27.636702Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=688 cells_after_filter=688 truncated=false bounds=50.5989,-1.3279,52.4537,1.1425 filters=1 filters_raw="Listing status:For rent" travel_entries=0 agg_ms=64.2 total_ms=69.4 -2026-03-15T19:09:28.107949Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=86195dac7ffffff resolution=6 total_count=602 filters=2 filters_raw="Listing status:For sale;;Asking price:23297.51:inf" ms=1.0 -2026-03-15T19:09:28.647682Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1004 cells_after_filter=1004 truncated=false bounds=50.5989,-1.3279,52.4537,1.1425 filters=2 filters_raw="Listing status:For sale;;Asking price:23297.51:inf" travel_entries=0 agg_ms=57.9 total_ms=66.8 -2026-03-15T19:10:43.696300Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=86195dac7ffffff resolution=6 total_count=29 filters=1 filters_raw="Listing status:For rent" ms=1.5 -2026-03-15T19:10:43.917385Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=688 cells_after_filter=688 truncated=false bounds=50.5989,-1.3279,52.4537,1.1425 filters=1 filters_raw="Listing status:For rent" travel_entries=0 agg_ms=66.4 total_ms=72.3 -2026-03-15T19:10:44.773099Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=86195dac7ffffff resolution=6 total_count=602 filters=2 filters_raw="Listing status:For sale;;Asking price:23297.51:inf" ms=0.9 -2026-03-15T19:10:45.309165Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1004 cells_after_filter=1004 truncated=false bounds=50.5989,-1.3279,52.4537,1.1425 filters=2 filters_raw="Listing status:For sale;;Asking price:23297.51:inf" travel_entries=0 agg_ms=55.8 total_ms=65.3 -2026-03-15T19:11:44.827084Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T19:11:45.019108Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T19:11:45.539093Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:For sale;;Asking price:23297.51:inf" travel_entries=0 agg_ms=67.3 total_ms=79.7 -2026-03-15T19:12:22.900048Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:Historical sale;;Estimated current price:23297.51:inf" travel_entries=0 agg_ms=1266.0 total_ms=1293.0 -2026-03-15T19:12:43.487506Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:For sale;;Asking price:23297.51:inf" travel_entries=0 agg_ms=97.7 total_ms=119.2 -2026-03-15T19:12:56.981906Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=911 cells_after_filter=910 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For rent" travel_entries=0 agg_ms=92.3 total_ms=105.6 -2026-03-15T19:15:16.007945Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T19:15:16.008103Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T19:15:16.008110Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T19:15:16.129677Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T19:15:16.129690Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T19:15:25.994671Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T19:15:25.994690Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T19:15:26.528002Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T19:15:26.528016Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T19:15:26.610377Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T19:15:26.610387Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T19:16:11.721573Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=474965 rent_listings=24345 total=15702691 -2026-03-15T19:16:11.721688Z INFO property_map_server::data::property: Feature columns from config numeric=54 enums=13 total=67 -2026-03-15T19:16:13.315773Z INFO property_map_server::data::property: Combined data selected rows=15702691 -2026-03-15T19:16:13.525913Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-03-15T19:16:14.026360Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-03-15T19:16:15.880642Z INFO property_map_server::data::property: Extracting string columns -2026-03-15T19:16:18.439507Z INFO property_map_server::data::property: Building enum features -2026-03-15T19:16:20.159326Z INFO property_map_server::data::property: Extracting renovation history -2026-03-15T19:16:22.764657Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829807 -2026-03-15T19:16:22.764667Z INFO property_map_server::data::property: Extracting listing features -2026-03-15T19:16:23.416811Z INFO property_map_server::data::property: Listing features extracted properties_with_features=412749 -2026-03-15T19:16:23.416820Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-03-15T19:16:24.612917Z INFO property_map_server::data::property: Building interned strings -2026-03-15T19:16:31.709728Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-03-15T19:16:34.550669Z INFO property_map_server::data::property: Data loading complete -2026-03-15T19:16:36.027023Z INFO property_map_server: Property data loaded rows=15702691 features=67 enums=13 -2026-03-15T19:16:36.027032Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-03-15T19:16:36.427705Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-03-15T19:16:36.427713Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-03-15T19:16:36.848803Z INFO property_map_server::data::property: H3 precomputation complete (15702691 cells) -2026-03-15T19:16:36.848848Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-03-15T19:16:36.848862Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-03-15T19:16:36.922825Z INFO property_map_server::data::poi: Loaded 678242 POIs -2026-03-15T19:16:37.040700Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-03-15T19:16:37.041316Z INFO property_map_server::data::poi: POI data loading complete. -2026-03-15T19:16:37.080709Z INFO property_map_server: POI data loaded pois=678242 -2026-03-15T19:16:37.080719Z INFO property_map_server: Building POI spatial grid index -2026-03-15T19:16:37.087492Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-03-15T19:16:37.087505Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-03-15T19:16:37.092797Z INFO property_map_server::data::places: Loaded 3474 places -2026-03-15T19:16:37.093630Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-03-15T19:16:37.093696Z INFO property_map_server: Place data loaded places=3474 -2026-03-15T19:16:37.093709Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-03-15T19:16:37.093714Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-03-15T19:16:37.097696Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-03-15T19:16:40.166666Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-03-15T19:16:40.166676Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-03-15T19:16:40.166689Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-03-15T19:16:40.223398Z INFO property_map_server: PMTiles loaded successfully -2026-03-15T19:16:40.267971Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-03-15T19:16:40.329251Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-03-15T19:16:40.329417Z INFO property_map_server: Precomputed features response groups=9 -2026-03-15T19:16:40.329432Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-03-15T19:16:40.466894Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-03-15T19:16:40.474329Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-03-15T19:16:40.488014Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-03-15T19:16:40.724141Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfectpostcodes.schmelczer.dev/pb -2026-03-15T19:16:40.728811Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-03-15T19:16:40.728841Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-03-15T19:16:40.728857Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-03-15T19:16:40.781239Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2780 -2026-03-15T19:16:40.786720Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=350 -2026-03-15T19:16:40.789828Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=355 -2026-03-15T19:16:40.812650Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=1849 -2026-03-15T19:16:40.812688Z INFO property_map_server: Travel time store loaded modes=4 -2026-03-15T19:16:40.812745Z INFO property_map_server: Precomputed AI filters system prompt -2026-03-15T19:16:44.806149Z INFO property_map_server: All memory pages locked (mlockall) -2026-03-15T19:16:44.806208Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-03-15T19:18:41.554399Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=1102.3 total_ms=1142.0 -2026-03-15T19:18:51.943051Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:Historical sale;;Estimated current price:23297.51:inf" travel_entries=0 agg_ms=1089.3 total_ms=1111.0 -2026-03-15T19:18:52.235271Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=88.8 total_ms=101.0 -2026-03-15T19:18:53.034978Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=911 cells_after_filter=910 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For rent" travel_entries=0 agg_ms=71.2 total_ms=79.2 -2026-03-15T19:18:54.485285Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=86.6 total_ms=98.8 -2026-03-15T19:18:56.331564Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:Historical sale;;Estimated current price:23297.51:inf" travel_entries=0 agg_ms=1100.7 total_ms=1122.4 -2026-03-15T19:18:57.013412Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=86.3 total_ms=98.3 -2026-03-15T19:18:57.497646Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=911 cells_after_filter=910 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For rent" travel_entries=0 agg_ms=80.4 total_ms=87.3 -2026-03-15T19:18:58.307229Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=86.4 total_ms=98.6 -2026-03-15T19:18:59.209272Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=92.3 total_ms=115.9 -2026-03-15T19:18:59.605162Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:Historical sale;;Estimated current price:23297.51:inf" travel_entries=0 agg_ms=1104.1 total_ms=1125.8 -2026-03-15T19:19:00.641552Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=101.5 total_ms=114.0 -2026-03-15T19:19:01.055691Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:Historical sale;;Estimated current price:23297.51:inf" travel_entries=0 agg_ms=1102.8 total_ms=1133.7 -2026-03-15T19:19:01.767817Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=911 cells_after_filter=910 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For rent" travel_entries=0 agg_ms=70.5 total_ms=77.5 -2026-03-15T19:19:02.094672Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=95.1 total_ms=107.1 -2026-03-15T19:19:04.696909Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:Historical sale;;Estimated current price:23297.51:inf" travel_entries=0 agg_ms=1094.7 total_ms=1116.4 -2026-03-15T19:20:18.135252Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=87.8 total_ms=99.9 -2026-03-15T19:21:06.589853Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 cells_before_filter=911 cells_after_filter=910 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For rent" travel_entries=0 agg_ms=70.6 total_ms=77.5 -2026-03-15T19:22:21.723624Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T19:22:21.723777Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T19:22:21.723788Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T19:22:21.792919Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T19:22:21.792931Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T19:24:04.122070Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T19:24:04.122238Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T19:24:04.122243Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T19:24:04.183691Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T19:24:04.183700Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T19:24:10.703405Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T19:24:10.703567Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T19:24:10.703573Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T19:24:10.764393Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T19:24:10.764404Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T19:24:13.175087Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T19:24:13.175096Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T19:24:14.743132Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T19:24:14.743145Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T19:24:15.276707Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T19:24:15.276719Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T19:32:31.326505Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T19:32:31.326667Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T19:32:31.326674Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T19:32:31.468299Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T19:32:31.468311Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T19:32:36.199335Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T19:32:36.199348Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T19:32:36.594288Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T19:32:36.594299Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T19:32:36.659669Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T19:32:36.659679Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T19:33:03.760178Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=474965 rent_listings=24345 total=15702691 -2026-03-15T19:33:03.760265Z INFO property_map_server::data::property: Feature columns from config numeric=54 enums=13 total=67 -2026-03-15T19:33:05.203275Z INFO property_map_server::data::property: Combined data selected rows=15702691 -2026-03-15T19:33:05.385487Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-03-15T19:33:05.825530Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-03-15T19:33:07.452637Z INFO property_map_server::data::property: Extracting string columns -2026-03-15T19:33:09.737556Z INFO property_map_server::data::property: Building enum features -2026-03-15T19:33:11.190065Z INFO property_map_server::data::property: Extracting renovation history -2026-03-15T19:33:13.640495Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829807 -2026-03-15T19:33:13.640506Z INFO property_map_server::data::property: Extracting listing features -2026-03-15T19:33:14.224090Z INFO property_map_server::data::property: Listing features extracted properties_with_features=412749 -2026-03-15T19:33:14.224101Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-03-15T19:33:15.218314Z INFO property_map_server::data::property: Building interned strings -2026-03-15T19:33:21.691381Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-03-15T19:33:24.347401Z INFO property_map_server::data::property: Data loading complete -2026-03-15T19:33:26.411071Z INFO property_map_server: Property data loaded rows=15702691 features=67 enums=13 -2026-03-15T19:33:26.411081Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-03-15T19:33:26.535487Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-03-15T19:33:26.535498Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-03-15T19:33:27.113000Z INFO property_map_server::data::property: H3 precomputation complete (15702691 cells) -2026-03-15T19:33:27.113028Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-03-15T19:33:27.113036Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-03-15T19:33:27.165121Z INFO property_map_server::data::poi: Loaded 678242 POIs -2026-03-15T19:33:27.304878Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-03-15T19:33:27.305504Z INFO property_map_server::data::poi: POI data loading complete. -2026-03-15T19:33:27.346347Z INFO property_map_server: POI data loaded pois=678242 -2026-03-15T19:33:27.346357Z INFO property_map_server: Building POI spatial grid index -2026-03-15T19:33:27.352391Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-03-15T19:33:27.352399Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-03-15T19:33:27.365758Z INFO property_map_server::data::places: Loaded 3474 places -2026-03-15T19:33:27.366584Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-03-15T19:33:27.366644Z INFO property_map_server: Place data loaded places=3474 -2026-03-15T19:33:27.366655Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-03-15T19:33:27.366659Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-03-15T19:33:27.392761Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-03-15T19:33:36.895174Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-03-15T19:33:36.895188Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-03-15T19:33:36.895208Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-03-15T19:33:36.998297Z INFO property_map_server: PMTiles loaded successfully -2026-03-15T19:33:37.053356Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-03-15T19:33:37.109062Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-03-15T19:33:37.109355Z INFO property_map_server: Precomputed features response groups=9 -2026-03-15T19:33:37.109374Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-03-15T19:33:37.762412Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-03-15T19:33:37.767896Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-03-15T19:33:37.775340Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-03-15T19:33:38.060153Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-03-15T19:33:38.063925Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-03-15T19:33:38.063950Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-03-15T19:33:38.063967Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-03-15T19:33:38.278834Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2780 -2026-03-15T19:33:38.287416Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=350 -2026-03-15T19:33:38.292977Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=355 -2026-03-15T19:33:38.359034Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=1849 -2026-03-15T19:33:38.359070Z INFO property_map_server: Travel time store loaded modes=4 -2026-03-15T19:33:38.359129Z INFO property_map_server: Precomputed AI filters system prompt -2026-03-15T19:33:48.937764Z INFO property_map_server: All memory pages locked (mlockall) -2026-03-15T19:33:48.937811Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-03-15T19:33:49.510480Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T19:33:49.711250Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T19:33:49.717966Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T19:33:49.758705Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T19:33:50.515563Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T19:33:50.515611Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T19:33:50.526782Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T19:33:50.526799Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T19:33:50.624015Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T19:33:50.954642Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T19:33:51.089161Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T19:33:51.089169Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T19:33:51.344202Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:Historical sale;;Estimated current price:23297.51:inf" travel_entries=0 agg_ms=148.7 total_ms=177.0 -2026-03-15T19:34:49.486571Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T19:34:49.486761Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T19:34:50.105387Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:Historical sale;;Estimated current price:23297.51:inf" travel_entries=0 agg_ms=147.2 total_ms=181.6 -2026-03-15T19:35:47.333901Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T19:35:47.633561Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T19:35:47.964989Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:Historical sale;;Estimated current price:23297.51:inf" travel_entries=0 agg_ms=127.2 total_ms=151.0 -2026-03-15T19:36:10.914163Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T19:36:10.935314Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T19:36:11.591360Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:Historical sale;;Estimated current price:23297.51:inf" travel_entries=0 agg_ms=148.2 total_ms=179.1 -2026-03-15T19:37:10.487304Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:For sale;;Asking price:23297.51:inf" travel_entries=0 agg_ms=30.4 total_ms=42.4 -2026-03-15T19:37:11.520281Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=911 cells_after_filter=910 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For rent" travel_entries=0 agg_ms=34.6 total_ms=41.1 -2026-03-15T19:37:12.429971Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=92.6 total_ms=114.8 -2026-03-15T19:39:01.324173Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1374 cells_after_filter=1370 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:Historical sale;;Estimated monthly rent:300:7750" travel_entries=0 agg_ms=78.6 total_ms=100.6 -2026-03-15T19:39:11.452418Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=34.6 total_ms=46.5 -2026-03-15T19:39:12.258031Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=104.1 total_ms=126.5 -2026-03-15T19:39:13.209101Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=30.2 total_ms=41.9 -2026-03-15T19:39:13.542817Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=86.2 total_ms=108.5 -2026-03-15T19:39:17.811115Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1374 cells_after_filter=1370 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:Historical sale;;Estimated monthly rent:300:7750" travel_entries=0 agg_ms=78.0 total_ms=100.1 -2026-03-15T19:39:18.543391Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=31.1 total_ms=42.7 -2026-03-15T19:39:21.422553Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=99.7 total_ms=122.0 -2026-03-15T19:39:24.089893Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1374 cells_after_filter=1370 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:Historical sale;;Estimated monthly rent:300:7750" travel_entries=0 agg_ms=65.8 total_ms=87.6 -2026-03-15T19:39:34.096698Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=878 cells_after_filter=877 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:For rent;;Asking rent (monthly):300:7750" travel_entries=0 agg_ms=34.2 total_ms=40.6 -2026-03-15T19:39:35.136941Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1374 cells_after_filter=1370 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:Historical sale;;Estimated monthly rent:300:7750" travel_entries=0 agg_ms=77.3 total_ms=99.4 -2026-03-15T19:39:35.997965Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=878 cells_after_filter=877 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:For rent;;Asking rent (monthly):300:7750" travel_entries=0 agg_ms=27.5 total_ms=34.4 -2026-03-15T19:39:36.896448Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=30.0 total_ms=43.4 -2026-03-15T19:39:37.822906Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=97.3 total_ms=119.7 -2026-03-15T19:39:38.005882Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=31.8 total_ms=43.6 -2026-03-15T19:39:38.307634Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=911 cells_after_filter=910 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For rent" travel_entries=0 agg_ms=32.0 total_ms=38.7 -2026-03-15T19:39:39.034035Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=32.7 total_ms=44.5 -2026-03-15T19:39:39.374475Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=100.4 total_ms=122.4 -2026-03-15T19:39:39.415811Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=39.0 total_ms=50.9 -2026-03-15T19:39:40.267881Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=911 cells_after_filter=910 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For rent" travel_entries=0 agg_ms=28.4 total_ms=35.2 -2026-03-15T19:39:40.542606Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=35.2 total_ms=47.1 -2026-03-15T19:39:40.845586Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=88.6 total_ms=110.3 -2026-03-15T19:39:42.206069Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=32.7 total_ms=44.7 -2026-03-15T19:39:43.318640Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=911 cells_after_filter=910 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For rent" travel_entries=0 agg_ms=27.1 total_ms=33.6 -2026-03-15T19:39:44.688592Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=96.4 total_ms=117.7 -2026-03-15T19:39:45.172008Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=911 cells_after_filter=910 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For rent" travel_entries=0 agg_ms=29.2 total_ms=36.4 -2026-03-15T19:39:45.850790Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=40.1 total_ms=51.9 -2026-03-15T19:39:46.189922Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=911 cells_after_filter=910 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For rent" travel_entries=0 agg_ms=29.0 total_ms=35.7 -2026-03-15T19:39:46.998212Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=86.0 total_ms=108.9 -2026-03-15T19:39:47.177336Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=911 cells_after_filter=910 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For rent" travel_entries=0 agg_ms=29.1 total_ms=35.8 -2026-03-15T19:39:47.696691Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=96.6 total_ms=118.0 -2026-03-15T19:39:48.556326Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=911 cells_after_filter=910 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For rent" travel_entries=0 agg_ms=28.2 total_ms=35.0 -2026-03-15T19:39:48.906118Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=107.8 total_ms=129.7 -2026-03-15T19:39:51.395259Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1374 cells_after_filter=1370 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:Historical sale;;Estimated monthly rent:300:7750" travel_entries=0 agg_ms=66.3 total_ms=88.4 -2026-03-15T19:39:58.878189Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=878 cells_after_filter=877 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=2 filters_raw="Listing status:For rent;;Asking rent (monthly):300:7750" travel_entries=0 agg_ms=31.0 total_ms=37.7 -2026-03-15T19:40:04.517960Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1349 cells_after_filter=1348 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=31.5 total_ms=44.3 -2026-03-15T19:40:17.346685Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=96.9 total_ms=119.8 -2026-03-15T19:47:52.591641Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T19:47:52.591925Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T19:47:53.240629Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7065688 parallel=true cells_before_filter=1376 cells_after_filter=1372 truncated=false bounds=50.5887,-1.9407,52.4636,1.7553 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=95.9 total_ms=117.5 -2026-03-15T19:48:12.279153Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4253126 parallel=true cells_before_filter=3093 cells_after_filter=3064 truncated=false bounds=50.9497,-0.9772,51.9159,0.9233 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=54.4 total_ms=137.0 -2026-03-15T19:48:13.512341Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=2883111 parallel=true cells_before_filter=1105 cells_after_filter=1088 truncated=false bounds=51.1146,-0.5552,51.6729,0.5420 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=36.5 total_ms=54.4 -2026-03-15T19:48:14.110557Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1687410 parallel=true cells_before_filter=2479 cells_after_filter=2434 truncated=false bounds=51.2171,-0.3474,51.5584,0.3232 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=22.6 total_ms=61.3 -2026-03-15T19:48:16.632555Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=1007854 parallel=true cells_before_filter=5324 cells_after_filter=5035 truncated=false bounds=51.3626,-0.1740,51.5564,0.2074 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=16.9 total_ms=117.8 -2026-03-15T19:51:26.541773Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=190938 parallel=true cells_before_filter=1076 cells_after_filter=1033 truncated=false bounds=51.4310,-0.0323,51.5159,0.1349 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=3.8 total_ms=20.0 -2026-03-15T19:51:30.533448Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=384437 parallel=true cells_before_filter=2704 cells_after_filter=2497 truncated=false bounds=51.4379,0.0032,51.5871,0.2970 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=7.4 total_ms=46.9 -2026-03-15T19:51:31.069688Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=632131 parallel=true cells_before_filter=3388 cells_after_filter=3150 truncated=false bounds=51.4091,-0.1211,51.5583,0.1727 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=10.9 total_ms=60.6 -2026-03-15T19:51:35.046811Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=65919 parallel=true cells_before_filter=341 cells_after_filter=288 truncated=false bounds=51.4524,-0.0211,51.4936,0.0599 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=1.6 total_ms=6.2 -2026-03-15T19:51:36.299041Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=63016 parallel=true cells_before_filter=366 cells_after_filter=298 truncated=false bounds=51.4463,-0.0284,51.4875,0.0526 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=1.9 total_ms=6.5 -2026-03-15T19:54:34.842844Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad2ec7ffff resolution=9 total_count=102 filters=1 filters_raw="Listing status:Historical sale" ms=0.1 -2026-03-15T19:54:35.089458Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=51710 parallel=true cells_before_filter=295 cells_after_filter=209 truncated=false bounds=51.4463,-0.0153,51.4875,0.0394 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=1.6 total_ms=5.0 -2026-03-15T19:54:36.130976Z INFO property_map_server::routes::properties: GET /api/hexagon-properties h3=89194ad2ec7ffff resolution=9 total=102 returned=100 offset=0 filters=1 filters_raw="Listing status:Historical sale" ms=0.4 -2026-03-15T19:54:38.679953Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad2ec7ffff resolution=9 total_count=5 filters=1 filters_raw="Listing status:For sale" ms=0.1 -2026-03-15T19:54:38.832683Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=51710 parallel=true cells_before_filter=263 cells_after_filter=194 truncated=false bounds=51.4463,-0.0153,51.4875,0.0394 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=0.6 total_ms=2.4 -2026-03-15T19:55:05.573712Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad2ec7ffff resolution=9 total_count=102 filters=1 filters_raw="Listing status:Historical sale" ms=0.1 -2026-03-15T19:55:06.053141Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=51710 parallel=true cells_before_filter=295 cells_after_filter=209 truncated=false bounds=51.4463,-0.0153,51.4875,0.0394 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=1.4 total_ms=4.8 -2026-03-15T19:55:06.289059Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad2ec7ffff resolution=9 total_count=5 filters=1 filters_raw="Listing status:For sale" ms=0.1 -2026-03-15T19:55:06.464008Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=51710 parallel=true cells_before_filter=263 cells_after_filter=194 truncated=false bounds=51.4463,-0.0153,51.4875,0.0394 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=0.7 total_ms=2.4 -2026-03-15T19:55:07.257113Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=63016 parallel=true cells_before_filter=329 cells_after_filter=275 truncated=false bounds=51.4463,-0.0284,51.4875,0.0526 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=0.8 total_ms=3.6 -2026-03-15T19:55:10.176114Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad2ecfffff resolution=9 total_count=20 filters=1 filters_raw="Listing status:For sale" ms=0.1 -2026-03-15T19:55:10.449590Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=51710 parallel=true cells_before_filter=263 cells_after_filter=194 truncated=false bounds=51.4463,-0.0153,51.4875,0.0394 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=0.8 total_ms=2.6 -2026-03-15T19:55:11.581365Z INFO property_map_server::routes::properties: GET /api/hexagon-properties h3=89194ad2ecfffff resolution=9 total=20 returned=20 offset=0 filters=1 filters_raw="Listing status:For sale" ms=0.3 -2026-03-15T19:55:12.826310Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad2ecfffff resolution=9 total_count=1 filters=1 filters_raw="Listing status:For rent" ms=0.1 -2026-03-15T19:55:13.296370Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=51710 parallel=true cells_before_filter=69 cells_after_filter=54 truncated=false bounds=51.4463,-0.0153,51.4875,0.0394 filters=1 filters_raw="Listing status:For rent" travel_entries=0 agg_ms=0.4 total_ms=0.8 -2026-03-15T19:55:14.274431Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad2ecfffff resolution=9 total_count=20 filters=1 filters_raw="Listing status:For sale" ms=0.2 -2026-03-15T19:55:14.745705Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=51710 parallel=true cells_before_filter=263 cells_after_filter=194 truncated=false bounds=51.4463,-0.0153,51.4875,0.0394 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=0.8 total_ms=2.6 -2026-03-15T19:55:15.410862Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=51710 parallel=true cells_before_filter=263 cells_after_filter=194 truncated=false bounds=51.4463,-0.0153,51.4875,0.0394 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=0.7 total_ms=2.6 -2026-03-15T19:55:15.973540Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad2ecfffff resolution=9 total_count=285 filters=1 filters_raw="Listing status:Historical sale" ms=0.2 -2026-03-15T19:55:16.149036Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=51710 parallel=true cells_before_filter=295 cells_after_filter=209 truncated=false bounds=51.4463,-0.0153,51.4875,0.0394 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=1.6 total_ms=5.2 -2026-03-15T19:55:50.335806Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=63016 parallel=true cells_before_filter=366 cells_after_filter=298 truncated=false bounds=51.4463,-0.0284,51.4875,0.0526 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=1.8 total_ms=6.5 -2026-03-15T19:55:51.579153Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad2e53ffff resolution=9 total_count=119 filters=1 filters_raw="Listing status:Historical sale" ms=0.1 -2026-03-15T19:55:51.847817Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=51710 parallel=true cells_before_filter=295 cells_after_filter=209 truncated=false bounds=51.4463,-0.0153,51.4875,0.0394 filters=1 filters_raw="Listing status:Historical sale" travel_entries=0 agg_ms=1.6 total_ms=4.8 -2026-03-15T19:57:08.597832Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14962301 parallel=true cells_before_filter=687 cells_after_filter=687 truncated=false bounds=46.0000,-12.0000,56.5000,12.0000 filters=0 filters_raw="-" travel_entries=0 agg_ms=206.2 total_ms=218.4 -2026-03-15T19:58:56.459660Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad2e53ffff resolution=9 total_count=5 filters=1 filters_raw="Listing status:For sale" ms=0.1 -2026-03-15T19:58:56.611313Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=51710 parallel=true cells_before_filter=263 cells_after_filter=194 truncated=false bounds=51.4463,-0.0153,51.4875,0.0394 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=0.8 total_ms=2.8 -2026-03-15T19:58:58.208823Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=63016 parallel=true cells_before_filter=329 cells_after_filter=275 truncated=false bounds=51.4463,-0.0284,51.4875,0.0526 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=1.0 total_ms=4.1 -2026-03-15T19:58:59.418179Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad2e5bffff resolution=9 total_count=5 filters=1 filters_raw="Listing status:For sale" ms=0.1 -2026-03-15T19:58:59.646741Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=51710 parallel=true cells_before_filter=263 cells_after_filter=194 truncated=false bounds=51.4463,-0.0153,51.4875,0.0394 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=0.7 total_ms=2.5 -2026-03-15T19:59:13.261566Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad2ecfffff resolution=9 total_count=20 filters=1 filters_raw="Listing status:For sale" ms=0.1 -2026-03-15T19:59:16.381213Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad216fffff resolution=9 total_count=2 filters=1 filters_raw="Listing status:For sale" ms=0.1 -2026-03-15T19:59:19.468079Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=65337 parallel=true cells_before_filter=263 cells_after_filter=187 truncated=false bounds=51.4575,-0.0360,51.4986,0.0187 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=0.8 total_ms=2.8 -2026-03-15T19:59:20.912780Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=57987 parallel=true cells_before_filter=230 cells_after_filter=192 truncated=false bounds=51.4560,-0.0422,51.4972,0.0126 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=0.6 total_ms=2.4 -2026-03-15T19:59:22.439657Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad04a7ffff resolution=9 total_count=45 filters=1 filters_raw="Listing status:For sale" ms=0.2 -2026-03-15T19:59:25.975325Z INFO property_map_server::routes::properties: GET /api/hexagon-properties h3=89194ad04a7ffff resolution=9 total=45 returned=45 offset=0 filters=1 filters_raw="Listing status:For sale" ms=0.4 -2026-03-15T19:59:44.130233Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=27673 parallel=false cells_before_filter=124 cells_after_filter=79 truncated=false bounds=51.4630,-0.0335,51.4874,-0.0010 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=0.6 total_ms=1.4 -2026-03-15T19:59:44.863513Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=23785 parallel=false cells_before_filter=105 cells_after_filter=82 truncated=false bounds=51.4612,-0.0378,51.4857,-0.0053 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=0.6 total_ms=1.4 -2026-03-15T19:59:45.429953Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10363 parallel=false cells_before_filter=39 cells_after_filter=27 truncated=false bounds=51.4668,-0.0300,51.4794,-0.0133 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=0.2 total_ms=0.6 -2026-03-15T19:59:47.052444Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=69 postcodes_after_filter=22 filtered_out=47 truncated=false bounds=51.469424,-0.026465,51.476579,-0.016948 filters=1 filters_raw="Listing status:For sale" travel_entries=0 total_ms=0.8 -2026-03-15T19:59:48.970011Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=34 postcodes_after_filter=8 filtered_out=26 truncated=false bounds=51.470330,-0.025601,51.476006,-0.018052 filters=1 filters_raw="Listing status:For sale" travel_entries=0 total_ms=0.5 -2026-03-15T19:59:49.463765Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=34 postcodes_after_filter=4 filtered_out=30 truncated=false bounds=51.471351,-0.024627,51.475359,-0.019295 filters=1 filters_raw="Listing status:For sale" travel_entries=0 total_ms=0.3 -2026-03-15T19:59:51.056899Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=34 postcodes_after_filter=9 filtered_out=25 truncated=false bounds=51.471780,-0.026331,51.475789,-0.020998 filters=1 filters_raw="Listing status:For sale" travel_entries=0 total_ms=0.4 -2026-03-15T19:59:51.581180Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=34 postcodes_after_filter=6 filtered_out=28 truncated=false bounds=51.471674,-0.025659,51.475683,-0.020327 filters=1 filters_raw="Listing status:For sale" travel_entries=0 total_ms=0.4 -2026-03-15T19:59:58.001176Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=34 postcodes_after_filter=8 filtered_out=26 truncated=false bounds=51.471124,-0.025948,51.476103,-0.019326 filters=1 filters_raw="Listing status:For sale" travel_entries=0 total_ms=0.6 -2026-03-15T20:00:01.147529Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad04a7ffff resolution=9 total_count=44 filters=2 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold|Leasehold" ms=0.2 -2026-03-15T20:00:01.649333Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=33 postcodes_after_filter=7 filtered_out=26 truncated=false bounds=51.471124,-0.025948,51.476103,-0.019326 filters=2 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold|Leasehold" travel_entries=0 total_ms=0.3 -2026-03-15T20:00:03.524035Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad04a7ffff resolution=9 total_count=1 filters=2 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold" ms=0.2 -2026-03-15T20:00:03.982950Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=5 postcodes_after_filter=1 filtered_out=4 truncated=false bounds=51.471124,-0.025948,51.476103,-0.019326 filters=2 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold" travel_entries=0 total_ms=0.2 -2026-03-15T20:00:05.734272Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=16 postcodes_after_filter=10 filtered_out=6 truncated=false bounds=51.468325,-0.029578,51.477865,-0.016889 filters=2 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold" travel_entries=0 total_ms=0.4 -2026-03-15T20:00:07.598747Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=371660 parallel=true cells_before_filter=1032 cells_after_filter=874 truncated=false bounds=51.4033,-0.1135,51.5201,0.0418 filters=2 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold" travel_entries=0 agg_ms=2.3 total_ms=9.7 -2026-03-15T20:00:07.902439Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=277117 parallel=true cells_before_filter=961 cells_after_filter=829 truncated=false bounds=51.4051,-0.0436,51.5218,0.1117 filters=2 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold" travel_entries=0 agg_ms=2.0 total_ms=9.7 -2026-03-15T20:00:08.868329Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=410619 parallel=true cells_before_filter=1446 cells_after_filter=1288 truncated=false bounds=51.3867,-0.0636,51.5340,0.1322 filters=2 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold" travel_entries=0 agg_ms=2.5 total_ms=14.6 -2026-03-15T20:00:10.739310Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad04a7ffff resolution=9 total_count=38 filters=2 filters_raw="Listing status:Historical sale;;Leasehold/Freehold:Freehold" ms=0.2 -2026-03-15T20:00:11.236022Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=410619 parallel=true cells_before_filter=2260 cells_after_filter=1984 truncated=false bounds=51.3867,-0.0636,51.5340,0.1322 filters=2 filters_raw="Listing status:Historical sale;;Leasehold/Freehold:Freehold" travel_entries=0 agg_ms=5.3 total_ms=38.1 -2026-03-15T20:00:12.173963Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad04a7ffff resolution=9 total_count=1 filters=2 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold" ms=0.2 -2026-03-15T20:00:12.666440Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=410619 parallel=true cells_before_filter=1446 cells_after_filter=1288 truncated=false bounds=51.3867,-0.0636,51.5340,0.1322 filters=2 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold" travel_entries=0 agg_ms=2.6 total_ms=15.7 -2026-03-15T20:00:19.409064Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad04a7ffff resolution=9 total_count=0 filters=3 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Price per sqm:5:1519231" ms=0.2 -2026-03-15T20:00:19.968653Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=571405 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.3867,-0.1106,51.5340,0.1792 filters=3 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Price per sqm:5:1519231" travel_entries=0 agg_ms=2.2 total_ms=2.2 -2026-03-15T20:00:20.722189Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=571405 parallel=true cells_before_filter=1971 cells_after_filter=1801 truncated=false bounds=51.3867,-0.1106,51.5340,0.1792 filters=2 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold" travel_entries=0 agg_ms=3.7 total_ms=6.2 -2026-03-15T20:00:21.190329Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=571405 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.3867,-0.1106,51.5340,0.1792 filters=3 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Price per sqm:5:1519231" travel_entries=0 agg_ms=2.3 total_ms=2.3 -2026-03-15T20:00:27.942711Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=571405 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.3867,-0.1106,51.5340,0.1792 filters=3 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Price per sqm:5:9200" travel_entries=0 agg_ms=2.1 total_ms=2.1 -2026-03-15T20:00:29.461340Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=525321 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.4145,-0.0678,51.5616,0.2220 filters=3 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Price per sqm:5:9200" travel_entries=0 agg_ms=1.9 total_ms=1.9 -2026-03-15T20:00:31.709909Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=525321 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.4145,-0.0678,51.5616,0.2220 filters=3 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Price per sqm:5:9200" travel_entries=0 agg_ms=2.1 total_ms=2.1 -2026-03-15T20:00:32.512895Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=525321 parallel=true cells_before_filter=1836 cells_after_filter=1678 truncated=false bounds=51.4145,-0.0678,51.5616,0.2220 filters=2 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold" travel_entries=0 agg_ms=3.2 total_ms=5.6 -2026-03-15T20:00:33.940425Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=525321 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.4145,-0.0678,51.5616,0.2220 filters=3 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Price per sqm:5:1700" travel_entries=0 agg_ms=1.6 total_ms=1.6 -2026-03-15T20:00:34.849329Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3141817 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.1389,-0.4994,51.7648,0.7321 filters=3 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Price per sqm:5:1700" travel_entries=0 agg_ms=14.9 total_ms=14.9 -2026-03-15T20:00:35.804047Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3560390 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.0590,-0.6228,51.8363,0.9068 filters=3 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Price per sqm:5:1700" travel_entries=0 agg_ms=9.3 total_ms=9.3 -2026-03-15T20:00:36.131775Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3610110 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.1661,-0.6093,51.9416,0.9202 filters=3 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Price per sqm:5:1700" travel_entries=0 agg_ms=9.3 total_ms=9.3 -2026-03-15T20:00:37.313585Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3610110 parallel=true cells_before_filter=1788 cells_after_filter=1780 truncated=false bounds=51.1661,-0.6093,51.9416,0.9202 filters=2 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold" travel_entries=0 agg_ms=11.8 total_ms=14.2 -2026-03-15T20:00:40.426451Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3610110 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.1661,-0.6093,51.9416,0.9202 filters=3 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Price per sqm:5:1519231" travel_entries=0 agg_ms=10.8 total_ms=10.8 -2026-03-15T20:00:42.361059Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3094495 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.2300,-0.4515,51.8453,0.7617 filters=3 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Price per sqm:5:1519231" travel_entries=0 agg_ms=9.4 total_ms=9.4 -2026-03-15T20:00:43.409927Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3094495 parallel=true cells_before_filter=1193 cells_after_filter=1182 truncated=false bounds=51.2300,-0.4515,51.8453,0.7617 filters=2 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold" travel_entries=0 agg_ms=10.5 total_ms=12.0 -2026-03-15T20:00:46.333117Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3094495 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.2300,-0.4515,51.8453,0.7617 filters=3 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Price per sqm:5:1519231" travel_entries=0 agg_ms=8.8 total_ms=8.8 -2026-03-15T20:00:48.082494Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3094495 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.2300,-0.4515,51.8453,0.7617 filters=3 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Price per sqm:5:1519231" travel_entries=0 agg_ms=8.4 total_ms=8.4 -2026-03-15T20:00:49.833842Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3094495 parallel=true cells_before_filter=1193 cells_after_filter=1182 truncated=false bounds=51.2300,-0.4515,51.8453,0.7617 filters=2 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold" travel_entries=0 agg_ms=10.1 total_ms=23.3 -2026-03-15T20:01:02.011997Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3094495 parallel=true cells_before_filter=1094 cells_after_filter=1088 truncated=false bounds=51.2300,-0.4515,51.8453,0.7617 filters=3 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Total floor area (sqm):0.1:8855327" travel_entries=0 agg_ms=11.0 total_ms=21.9 -2026-03-15T20:01:03.418647Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3094495 parallel=true cells_before_filter=1193 cells_after_filter=1182 truncated=false bounds=51.2300,-0.4515,51.8453,0.7617 filters=2 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold" travel_entries=0 agg_ms=11.4 total_ms=13.1 -2026-03-15T20:01:03.571497Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3094495 parallel=true cells_before_filter=1094 cells_after_filter=1088 truncated=false bounds=51.2300,-0.4515,51.8453,0.7617 filters=3 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Total floor area (sqm):0.1:8855327" travel_entries=0 agg_ms=11.2 total_ms=12.9 -2026-03-15T20:01:08.874337Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3094495 parallel=true cells_before_filter=1054 cells_after_filter=1048 truncated=false bounds=51.2300,-0.4515,51.8453,0.7617 filters=3 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Total floor area (sqm):0.1:204" travel_entries=0 agg_ms=12.2 total_ms=23.6 -2026-03-15T20:01:14.467687Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3094495 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.2300,-0.4515,51.8453,0.7617 filters=4 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Total floor area (sqm):0.1:204;;Est. price per sqm:20:918535" travel_entries=0 agg_ms=9.8 total_ms=9.8 -2026-03-15T20:01:15.872578Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3094495 parallel=true cells_before_filter=1054 cells_after_filter=1048 truncated=false bounds=51.2300,-0.4515,51.8453,0.7617 filters=3 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Total floor area (sqm):0.1:204" travel_entries=0 agg_ms=12.0 total_ms=13.6 -2026-03-15T20:01:16.342009Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3094495 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.2300,-0.4515,51.8453,0.7617 filters=4 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Total floor area (sqm):0.1:204;;Est. price per sqm:20:918535" travel_entries=0 agg_ms=10.0 total_ms=10.0 -2026-03-15T20:01:18.114175Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3094495 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.2300,-0.4515,51.8453,0.7617 filters=4 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Total floor area (sqm):0.1:204;;Est. price per sqm:20:918535" travel_entries=0 agg_ms=10.2 total_ms=10.2 -2026-03-15T20:01:40.296993Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3094495 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.2300,-0.4517,51.8453,0.7619 filters=4 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Total floor area (sqm):0.1:204;;Est. price per sqm:20:918535" travel_entries=0 agg_ms=9.8 total_ms=9.8 -2026-03-15T20:02:48.056601Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3111647 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.2295,-0.4528,51.8458,0.7630 filters=4 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Total floor area (sqm):0.1:204;;Est. price per sqm:20:918535" travel_entries=0 agg_ms=9.6 total_ms=9.6 -2026-03-15T20:02:49.785245Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3349513 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.2195,-0.5956,51.8557,0.9057 filters=4 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Total floor area (sqm):0.1:204;;Est. price per sqm:20:918535" travel_entries=0 agg_ms=9.4 total_ms=9.4 -2026-03-15T20:03:02.786058Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3349513 parallel=true cells_before_filter=1285 cells_after_filter=1278 truncated=false bounds=51.2195,-0.5956,51.8557,0.9057 filters=3 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Total floor area (sqm):0.1:204" travel_entries=0 agg_ms=13.1 total_ms=26.2 -2026-03-15T20:03:23.742245Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3349513 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.2195,-0.5956,51.8557,0.9057 filters=4 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Total floor area (sqm):0.1:204;;Price per sqm:5:1519231" travel_entries=0 agg_ms=10.0 total_ms=10.0 -2026-03-15T20:03:30.904544Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3349513 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.2195,-0.5956,51.8557,0.9057 filters=3 filters_raw="Listing status:For sale;;Leasehold/Freehold:Freehold;;Price per sqm:5:1519231" travel_entries=0 agg_ms=9.0 total_ms=9.0 -2026-03-15T20:03:31.700115Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3349513 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.2195,-0.5956,51.8557,0.9057 filters=2 filters_raw="Listing status:For sale;;Price per sqm:5:1519231" travel_entries=0 agg_ms=9.5 total_ms=9.5 -2026-03-15T20:03:33.123759Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3349513 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.2195,-0.5956,51.8557,0.9057 filters=2 filters_raw="Listing status:For sale;;Price per sqm:5:1519231" travel_entries=0 agg_ms=10.7 total_ms=10.7 -2026-03-15T20:03:33.264092Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3349513 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.2195,-0.5956,51.8557,0.9057 filters=2 filters_raw="Listing status:For sale;;Price per sqm:5:2500" travel_entries=0 agg_ms=8.3 total_ms=8.3 -2026-03-15T20:03:34.235435Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3349513 parallel=true cells_before_filter=1479 cells_after_filter=1465 truncated=false bounds=51.2195,-0.5956,51.8557,0.9057 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=10.7 total_ms=12.9 -2026-03-15T20:03:34.567324Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3349513 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.2195,-0.5956,51.8557,0.9057 filters=2 filters_raw="Listing status:For sale;;Price per sqm:1400:2500" travel_entries=0 agg_ms=9.0 total_ms=9.0 -2026-03-15T20:03:36.096362Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3349513 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.2195,-0.5956,51.8557,0.9057 filters=2 filters_raw="Listing status:For sale;;Price per sqm:1400:2500" travel_entries=0 agg_ms=7.6 total_ms=7.6 -2026-03-15T20:03:37.751074Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4814137 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=50.9471,-0.9801,52.1136,1.7728 filters=2 filters_raw="Listing status:For sale;;Price per sqm:1400:2500" travel_entries=0 agg_ms=11.8 total_ms=11.8 -2026-03-15T20:03:38.835277Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13490411 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=49.0536,-4.4123,53.8271,6.8427 filters=2 filters_raw="Listing status:For sale;;Price per sqm:1400:2500" travel_entries=0 agg_ms=56.1 total_ms=56.1 -2026-03-15T20:03:40.887729Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13490411 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=49.0536,-4.4123,53.8271,6.8427 filters=2 filters_raw="Listing status:For sale;;Price per sqm:1400:2500" travel_entries=0 agg_ms=49.8 total_ms=49.8 -2026-03-15T20:03:42.529302Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13490411 parallel=true cells_before_filter=3274 cells_after_filter=3270 truncated=false bounds=49.0536,-4.4123,53.8271,6.8427 filters=2 filters_raw="Listing status:Historical sale;;Price per sqm:1400:2500" travel_entries=0 agg_ms=84.4 total_ms=146.3 -2026-03-15T20:03:44.390098Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13490411 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=49.0536,-4.4123,53.8271,6.8427 filters=2 filters_raw="Listing status:For sale;;Price per sqm:1400:2500" travel_entries=0 agg_ms=54.6 total_ms=54.6 -2026-03-15T20:04:33.371452Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T20:04:33.371601Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T20:04:33.371608Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T20:04:33.457625Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T20:04:33.457635Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T20:04:35.974733Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T20:04:35.974742Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T20:04:36.398745Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T20:04:36.398757Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T20:04:36.476688Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T20:04:36.476699Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T20:04:46.252075Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=474965 rent_listings=24345 total=15702691 -2026-03-15T20:04:46.252184Z INFO property_map_server::data::property: Feature columns from config numeric=54 enums=13 total=67 -2026-03-15T20:04:47.610246Z INFO property_map_server::data::property: Combined data selected rows=15702691 -2026-03-15T20:04:47.804418Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-03-15T20:04:48.220314Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-03-15T20:04:49.335558Z INFO property_map_server::data::property: Extracting string columns -2026-03-15T20:04:51.577686Z INFO property_map_server::data::property: Building enum features -2026-03-15T20:04:53.025870Z INFO property_map_server::data::property: Extracting renovation history -2026-03-15T20:04:55.151481Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829807 -2026-03-15T20:04:55.151490Z INFO property_map_server::data::property: Extracting listing features -2026-03-15T20:04:55.671708Z INFO property_map_server::data::property: Listing features extracted properties_with_features=412749 -2026-03-15T20:04:55.671716Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-03-15T20:04:56.573495Z INFO property_map_server::data::property: Building interned strings -2026-03-15T20:05:02.540797Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-03-15T20:05:05.103322Z INFO property_map_server::data::property: Data loading complete -2026-03-15T20:05:06.794645Z INFO property_map_server: Property data loaded rows=15702691 features=67 enums=13 -2026-03-15T20:05:06.794655Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-03-15T20:05:06.892926Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-03-15T20:05:06.892936Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-03-15T20:05:07.310766Z INFO property_map_server::data::property: H3 precomputation complete (15702691 cells) -2026-03-15T20:05:07.310799Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-03-15T20:05:07.310815Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-03-15T20:05:07.355286Z INFO property_map_server::data::poi: Loaded 678242 POIs -2026-03-15T20:05:07.468648Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-03-15T20:05:07.469230Z INFO property_map_server::data::poi: POI data loading complete. -2026-03-15T20:05:07.506618Z INFO property_map_server: POI data loaded pois=678242 -2026-03-15T20:05:07.506627Z INFO property_map_server: Building POI spatial grid index -2026-03-15T20:05:07.512084Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-03-15T20:05:07.512091Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-03-15T20:05:07.525343Z INFO property_map_server::data::places: Loaded 3474 places -2026-03-15T20:05:07.526115Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-03-15T20:05:07.526170Z INFO property_map_server: Place data loaded places=3474 -2026-03-15T20:05:07.526181Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-03-15T20:05:07.526186Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-03-15T20:05:07.536262Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-03-15T20:05:15.228511Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-03-15T20:05:15.228521Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-03-15T20:05:15.228532Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-03-15T20:05:15.231530Z INFO property_map_server: PMTiles loaded successfully -2026-03-15T20:05:15.273794Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-03-15T20:05:15.309107Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-03-15T20:05:15.309278Z INFO property_map_server: Precomputed features response groups=9 -2026-03-15T20:05:15.309292Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-03-15T20:05:15.446941Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-03-15T20:05:15.454051Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-03-15T20:05:15.459669Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-03-15T20:05:15.591403Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-03-15T20:05:15.597637Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-03-15T20:05:15.597658Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-03-15T20:05:15.597670Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-03-15T20:05:15.643613Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2780 -2026-03-15T20:05:15.644670Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=350 -2026-03-15T20:05:15.646043Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=355 -2026-03-15T20:05:15.653830Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=1849 -2026-03-15T20:05:15.653847Z INFO property_map_server: Travel time store loaded modes=4 -2026-03-15T20:05:15.653891Z INFO property_map_server: Precomputed AI filters system prompt -2026-03-15T20:05:19.156377Z INFO property_map_server: All memory pages locked (mlockall) -2026-03-15T20:05:19.156422Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-03-15T20:05:27.513039Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:05:27.517384Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:05:27.524994Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:05:27.531774Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:05:27.537007Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:05:27.542722Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:05:27.549237Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:05:27.563523Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:05:28.096739Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:05:28.096753Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:06:11.902556Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13490411 parallel=true cells_before_filter=3248 cells_after_filter=3246 truncated=false bounds=49.0536,-4.4123,53.8271,6.8427 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=55.7 total_ms=84.8 -2026-03-15T20:08:11.734568Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13490411 parallel=true cells_before_filter=3113 cells_after_filter=3112 truncated=false bounds=49.0536,-4.4123,53.8271,6.8427 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):0.1:8855327" travel_entries=0 agg_ms=56.9 total_ms=83.5 -2026-03-15T20:08:12.991872Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13490411 parallel=true cells_before_filter=3248 cells_after_filter=3246 truncated=false bounds=49.0536,-4.4123,53.8271,6.8427 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=70.2 total_ms=76.3 -2026-03-15T20:08:13.507957Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13490411 parallel=true cells_before_filter=3113 cells_after_filter=3112 truncated=false bounds=49.0536,-4.4123,53.8271,6.8427 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):0.1:8855327" travel_entries=0 agg_ms=59.5 total_ms=63.9 -2026-03-15T20:08:19.338486Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13490411 parallel=true cells_before_filter=3113 cells_after_filter=3112 truncated=false bounds=49.0536,-4.4123,53.8271,6.8427 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):0.1:8855327" travel_entries=0 agg_ms=74.5 total_ms=102.6 -2026-03-15T20:08:20.686317Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13490411 parallel=true cells_before_filter=3248 cells_after_filter=3246 truncated=false bounds=49.0536,-4.4123,53.8271,6.8427 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=55.0 total_ms=59.5 -2026-03-15T20:08:20.922174Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13490411 parallel=true cells_before_filter=3113 cells_after_filter=3112 truncated=false bounds=49.0536,-4.4123,53.8271,6.8427 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):0.1:8855327" travel_entries=0 agg_ms=60.6 total_ms=65.2 -2026-03-15T20:08:26.772910Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13490411 parallel=true cells_before_filter=3082 cells_after_filter=3081 truncated=false bounds=49.0536,-4.4123,53.8271,6.8427 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):0.1:788" travel_entries=0 agg_ms=62.6 total_ms=89.4 -2026-03-15T20:08:28.805969Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13490411 parallel=true cells_before_filter=3248 cells_after_filter=3246 truncated=false bounds=49.0536,-4.4123,53.8271,6.8427 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=59.6 total_ms=64.4 -2026-03-15T20:08:28.952002Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13490411 parallel=true cells_before_filter=3082 cells_after_filter=3081 truncated=false bounds=49.0536,-4.4123,53.8271,6.8427 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):0.1:788" travel_entries=0 agg_ms=57.7 total_ms=62.3 -2026-03-15T20:08:30.558244Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13490411 parallel=true cells_before_filter=3113 cells_after_filter=3112 truncated=false bounds=49.0536,-4.4123,53.8271,6.8427 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):0.1:8855327" travel_entries=0 agg_ms=58.2 total_ms=84.6 -2026-03-15T20:08:33.038408Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13490411 parallel=true cells_before_filter=3248 cells_after_filter=3246 truncated=false bounds=49.0536,-4.4123,53.8271,6.8427 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=56.6 total_ms=61.3 -2026-03-15T20:08:33.304924Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13490411 parallel=true cells_before_filter=3113 cells_after_filter=3112 truncated=false bounds=49.0536,-4.4123,53.8271,6.8427 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):0.1:8855327" travel_entries=0 agg_ms=59.1 total_ms=63.7 -2026-03-15T20:08:34.406141Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13490411 parallel=true cells_before_filter=1106 cells_after_filter=1106 truncated=false bounds=49.0536,-4.4123,53.8271,6.8427 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):833:8855327" travel_entries=0 agg_ms=48.2 total_ms=55.7 -2026-03-15T20:08:36.292323Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=9738472 parallel=true cells_before_filter=765 cells_after_filter=765 truncated=false bounds=49.7628,-3.2615,52.9110,4.1398 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):833:8855327" travel_entries=0 agg_ms=36.2 total_ms=41.7 -2026-03-15T20:08:39.628619Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=2480095 parallel=true cells_before_filter=165 cells_after_filter=164 truncated=false bounds=51.3348,-0.4935,51.7042,0.3778 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):833:8855327" travel_entries=0 agg_ms=5.9 total_ms=7.2 -2026-03-15T20:08:41.653852Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88195da457fffff resolution=8 total_count=18 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):833:8855327" ms=0.1 -2026-03-15T20:08:41.915336Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=2176649 parallel=true cells_before_filter=139 cells_after_filter=139 truncated=false bounds=51.3348,-0.3793,51.7042,0.2636 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):833:8855327" travel_entries=0 agg_ms=5.4 total_ms=6.5 -2026-03-15T20:08:44.824263Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=308665 parallel=true cells_before_filter=40 cells_after_filter=37 truncated=false bounds=51.5155,-0.2104,51.6023,-0.0591 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):833:8855327" travel_entries=0 agg_ms=1.1 total_ms=1.4 -2026-03-15T20:08:45.089912Z INFO property_map_server::routes::properties: GET /api/hexagon-properties h3=88195da457fffff resolution=8 total=18 returned=18 offset=0 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):833:8855327" ms=0.2 -2026-03-15T20:09:25.568766Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=308665 parallel=true cells_before_filter=1197 cells_after_filter=1045 truncated=false bounds=51.5155,-0.2104,51.6023,-0.0591 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=2.1 total_ms=3.8 -2026-03-15T20:09:26.074762Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=308665 parallel=true cells_before_filter=40 cells_after_filter=37 truncated=false bounds=51.5155,-0.2104,51.6023,-0.0591 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):833:8855327" travel_entries=0 agg_ms=1.2 total_ms=1.3 -2026-03-15T20:09:28.666758Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88195da457fffff resolution=8 total_count=53 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):106:8855327" ms=0.1 -2026-03-15T20:09:29.155687Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=308665 parallel=true cells_before_filter=1096 cells_after_filter=963 truncated=false bounds=51.5155,-0.2104,51.6023,-0.0591 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):106:8855327" travel_entries=0 agg_ms=2.6 total_ms=12.1 -2026-03-15T20:09:29.978092Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=308665 parallel=true cells_before_filter=1197 cells_after_filter=1045 truncated=false bounds=51.5155,-0.2104,51.6023,-0.0591 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=2.1 total_ms=3.8 -2026-03-15T20:09:30.496935Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=308665 parallel=true cells_before_filter=1096 cells_after_filter=963 truncated=false bounds=51.5155,-0.2104,51.6023,-0.0591 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):106:8855327" travel_entries=0 agg_ms=2.1 total_ms=3.7 -2026-03-15T20:09:33.901621Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88195da457fffff resolution=8 total_count=19 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):106:204" ms=0.1 -2026-03-15T20:09:34.385794Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=308665 parallel=true cells_before_filter=1081 cells_after_filter=949 truncated=false bounds=51.5155,-0.2104,51.6023,-0.0591 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):106:204" travel_entries=0 agg_ms=2.4 total_ms=10.3 -2026-03-15T20:09:35.102671Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=308665 parallel=true cells_before_filter=1197 cells_after_filter=1045 truncated=false bounds=51.5155,-0.2104,51.6023,-0.0591 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=2.2 total_ms=3.9 -2026-03-15T20:09:35.587723Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=308665 parallel=true cells_before_filter=1081 cells_after_filter=949 truncated=false bounds=51.5155,-0.2104,51.6023,-0.0591 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):106:204" travel_entries=0 agg_ms=2.2 total_ms=3.7 -2026-03-15T20:09:36.148540Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88195da457fffff resolution=8 total_count=19 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):98:204" ms=0.1 -2026-03-15T20:09:36.644673Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=308665 parallel=true cells_before_filter=1081 cells_after_filter=949 truncated=false bounds=51.5155,-0.2104,51.6023,-0.0591 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):98:204" travel_entries=0 agg_ms=2.5 total_ms=10.4 -2026-03-15T20:09:37.160139Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=308665 parallel=true cells_before_filter=1197 cells_after_filter=1045 truncated=false bounds=51.5155,-0.2104,51.6023,-0.0591 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=2.2 total_ms=3.9 -2026-03-15T20:09:37.683238Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=308665 parallel=true cells_before_filter=1081 cells_after_filter=949 truncated=false bounds=51.5155,-0.2104,51.6023,-0.0591 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):98:204" travel_entries=0 agg_ms=2.2 total_ms=3.8 -2026-03-15T20:09:37.944776Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88195da457fffff resolution=8 total_count=19 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):89:204" ms=0.1 -2026-03-15T20:09:37.969098Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=308665 parallel=true cells_before_filter=1081 cells_after_filter=949 truncated=false bounds=51.5155,-0.2104,51.6023,-0.0591 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):89:204" travel_entries=0 agg_ms=2.2 total_ms=10.4 -2026-03-15T20:09:42.074237Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=308665 parallel=true cells_before_filter=1197 cells_after_filter=1045 truncated=false bounds=51.5155,-0.2104,51.6023,-0.0591 filters=1 filters_raw="Listing status:For sale" travel_entries=0 agg_ms=2.1 total_ms=4.2 -2026-03-15T20:09:42.532178Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=308665 parallel=true cells_before_filter=1081 cells_after_filter=949 truncated=false bounds=51.5155,-0.2104,51.6023,-0.0591 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):89:204" travel_entries=0 agg_ms=2.4 total_ms=4.0 -2026-03-15T20:09:50.016920Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88195da457fffff resolution=8 total_count=19 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):106:204" ms=0.1 -2026-03-15T20:09:50.508364Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=308665 parallel=true cells_before_filter=1081 cells_after_filter=949 truncated=false bounds=51.5155,-0.2104,51.6023,-0.0591 filters=2 filters_raw="Listing status:For sale;;Total floor area (sqm):106:204" travel_entries=0 agg_ms=2.2 total_ms=10.2 -2026-03-15T20:10:13.683691Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T20:10:13.683848Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T20:10:13.683854Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T20:10:13.750258Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T20:10:13.750268Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T20:10:16.179096Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T20:10:16.179106Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T20:10:16.456525Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T20:10:16.456537Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T20:10:16.514061Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T20:10:16.514070Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T20:10:22.681306Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=474965 rent_listings=24345 total=15702691 -2026-03-15T20:10:22.681402Z INFO property_map_server::data::property: Feature columns from config numeric=54 enums=13 total=67 -2026-03-15T20:10:24.012054Z INFO property_map_server::data::property: Combined data selected rows=15702691 -2026-03-15T20:10:24.180353Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-03-15T20:10:24.607077Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-03-15T20:10:25.773925Z INFO property_map_server::data::property: Extracting string columns -2026-03-15T20:10:27.857482Z INFO property_map_server::data::property: Building enum features -2026-03-15T20:10:29.227608Z INFO property_map_server::data::property: Extracting renovation history -2026-03-15T20:10:31.336600Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829807 -2026-03-15T20:10:31.336609Z INFO property_map_server::data::property: Extracting listing features -2026-03-15T20:10:31.843715Z INFO property_map_server::data::property: Listing features extracted properties_with_features=412749 -2026-03-15T20:10:31.843723Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-03-15T20:10:32.766778Z INFO property_map_server::data::property: Building interned strings -2026-03-15T20:10:38.715142Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-03-15T20:10:41.203246Z INFO property_map_server::data::property: Data loading complete -2026-03-15T20:10:42.829684Z INFO property_map_server: Property data loaded rows=15702691 features=67 enums=13 -2026-03-15T20:10:42.829695Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-03-15T20:10:42.925550Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-03-15T20:10:42.925560Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-03-15T20:10:43.323292Z INFO property_map_server::data::property: H3 precomputation complete (15702691 cells) -2026-03-15T20:10:43.323313Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-03-15T20:10:43.323319Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-03-15T20:10:43.341356Z INFO property_map_server::data::poi: Loaded 678242 POIs -2026-03-15T20:10:43.453718Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-03-15T20:10:43.454297Z INFO property_map_server::data::poi: POI data loading complete. -2026-03-15T20:10:43.490938Z INFO property_map_server: POI data loaded pois=678242 -2026-03-15T20:10:43.490947Z INFO property_map_server: Building POI spatial grid index -2026-03-15T20:10:43.496143Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-03-15T20:10:43.496149Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-03-15T20:10:43.496678Z INFO property_map_server::data::places: Loaded 3474 places -2026-03-15T20:10:43.497419Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-03-15T20:10:43.497476Z INFO property_map_server: Place data loaded places=3474 -2026-03-15T20:10:43.497486Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-03-15T20:10:43.497491Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-03-15T20:10:43.498313Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-03-15T20:10:50.089457Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-03-15T20:10:50.089468Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-03-15T20:10:50.089483Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-03-15T20:10:50.089693Z INFO property_map_server: PMTiles loaded successfully -2026-03-15T20:10:50.134239Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-03-15T20:10:50.160720Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-03-15T20:10:50.160908Z INFO property_map_server: Precomputed features response groups=9 -2026-03-15T20:10:50.160921Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-03-15T20:10:50.220618Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-03-15T20:10:50.224719Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-03-15T20:10:50.247220Z INFO property_map_server::pocketbase: Added notes text field to PocketBase collection 'saved_searches' -2026-03-15T20:10:50.251061Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-03-15T20:10:50.257749Z INFO property_map_server::pocketbase: Added notes text field to PocketBase collection 'saved_properties' -2026-03-15T20:10:50.304219Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-03-15T20:10:50.308723Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-03-15T20:10:50.308749Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-03-15T20:10:50.308761Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-03-15T20:10:50.314963Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2780 -2026-03-15T20:10:50.315108Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=350 -2026-03-15T20:10:50.315266Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=355 -2026-03-15T20:10:50.316776Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=1849 -2026-03-15T20:10:50.316796Z INFO property_map_server: Travel time store loaded modes=4 -2026-03-15T20:10:50.316843Z INFO property_map_server: Precomputed AI filters system prompt -2026-03-15T20:10:51.706624Z INFO property_map_server: All memory pages locked (mlockall) -2026-03-15T20:10:51.706663Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-03-15T20:10:52.074357Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:10:52.074443Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:10:52.507461Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:10:52.508607Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:10:52.516615Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:10:52.522899Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:10:52.536710Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:10:52.541257Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:10:52.549244Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:10:52.550031Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:18:43.657651Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T20:18:43.657816Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T20:18:43.657822Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T20:18:43.746197Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T20:18:43.746208Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T20:18:46.373581Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T20:18:46.373592Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T20:18:46.679114Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T20:18:46.679124Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T20:18:46.747208Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T20:18:46.747221Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T20:19:00.212275Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T20:19:00.212447Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T20:19:00.212456Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T20:19:00.289849Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T20:19:00.289859Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T20:19:02.760385Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T20:19:02.760396Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T20:19:03.052345Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T20:19:03.052355Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T20:19:03.116051Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T20:19:03.116060Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T20:19:09.885025Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=474965 rent_listings=24345 total=15702691 -2026-03-15T20:19:09.885115Z INFO property_map_server::data::property: Feature columns from config numeric=54 enums=13 total=67 -2026-03-15T20:19:11.176403Z INFO property_map_server::data::property: Combined data selected rows=15702691 -2026-03-15T20:19:11.363917Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-03-15T20:19:11.771906Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-03-15T20:19:13.025850Z INFO property_map_server::data::property: Extracting string columns -2026-03-15T20:19:15.244059Z INFO property_map_server::data::property: Building enum features -2026-03-15T20:19:16.598869Z INFO property_map_server::data::property: Extracting renovation history -2026-03-15T20:19:18.813936Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829807 -2026-03-15T20:19:18.813945Z INFO property_map_server::data::property: Extracting listing features -2026-03-15T20:19:19.353132Z INFO property_map_server::data::property: Listing features extracted properties_with_features=412749 -2026-03-15T20:19:19.353141Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-03-15T20:19:20.231462Z INFO property_map_server::data::property: Building interned strings -2026-03-15T20:19:26.257466Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-03-15T20:19:28.766985Z INFO property_map_server::data::property: Data loading complete -2026-03-15T20:19:30.388072Z INFO property_map_server: Property data loaded rows=15702691 features=67 enums=13 -2026-03-15T20:19:30.388081Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-03-15T20:19:30.483869Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-03-15T20:19:30.483878Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-03-15T20:19:30.866157Z INFO property_map_server::data::property: H3 precomputation complete (15702691 cells) -2026-03-15T20:19:30.866199Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-03-15T20:19:30.866214Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-03-15T20:19:30.902414Z INFO property_map_server::data::poi: Loaded 678242 POIs -2026-03-15T20:19:31.015549Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-03-15T20:19:31.016109Z INFO property_map_server::data::poi: POI data loading complete. -2026-03-15T20:19:31.054466Z INFO property_map_server: POI data loaded pois=678242 -2026-03-15T20:19:31.054474Z INFO property_map_server: Building POI spatial grid index -2026-03-15T20:19:31.059717Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-03-15T20:19:31.059723Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-03-15T20:19:31.069876Z INFO property_map_server::data::places: Loaded 3474 places -2026-03-15T20:19:31.070582Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-03-15T20:19:31.070632Z INFO property_map_server: Place data loaded places=3474 -2026-03-15T20:19:31.070640Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-03-15T20:19:31.070644Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-03-15T20:19:31.079677Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-03-15T20:19:39.095251Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-03-15T20:19:39.095261Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-03-15T20:19:39.095277Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-03-15T20:19:39.185235Z INFO property_map_server: PMTiles loaded successfully -2026-03-15T20:19:39.228620Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-03-15T20:19:39.315674Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-03-15T20:19:39.315892Z INFO property_map_server: Precomputed features response groups=9 -2026-03-15T20:19:39.315908Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-03-15T20:19:39.370690Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-03-15T20:19:39.373624Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-03-15T20:19:39.378395Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-03-15T20:19:39.427367Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-03-15T20:19:39.430988Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-03-15T20:19:39.431004Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-03-15T20:19:39.431017Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-03-15T20:19:39.437636Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2780 -2026-03-15T20:19:39.437807Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=350 -2026-03-15T20:19:39.437966Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=355 -2026-03-15T20:19:39.439692Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=1849 -2026-03-15T20:19:39.439715Z INFO property_map_server: Travel time store loaded modes=4 -2026-03-15T20:19:39.439777Z INFO property_map_server: Precomputed AI filters system prompt -2026-03-15T20:19:42.954025Z INFO property_map_server: All memory pages locked (mlockall) -2026-03-15T20:19:42.954067Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-03-15T20:19:43.261880Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:19:43.263169Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:20:43.749947Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:20:43.751657Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:20:44.102549Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:20:44.111787Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:20:44.529068Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:20:44.529991Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:20:44.546765Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:20:44.551558Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:20:44.558857Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:20:44.565720Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:20:44.574121Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:20:44.577816Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:20:50.493074Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:20:50.493085Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:20:50.514758Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:20:50.515163Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:20:50.526484Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:20:50.530275Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:20:50.535884Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:20:50.542453Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:20:50.551188Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:20:50.556666Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:20:51.102224Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T20:20:51.110261Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T20:21:45.349498Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T20:21:45.349655Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T20:21:45.349664Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T20:21:45.421388Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T20:21:45.421400Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T20:21:47.937781Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T20:21:47.937791Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T20:21:48.227331Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T20:21:48.227342Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T20:21:48.286224Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T20:21:48.286233Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T20:22:05.552980Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=474965 rent_listings=24345 total=15702691 -2026-03-15T20:31:37.445987Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T20:31:37.446148Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T20:31:37.446155Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T20:31:37.534049Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T20:31:37.534061Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T20:31:40.177015Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T20:31:40.177028Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T20:31:40.482618Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T20:31:40.482630Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T20:31:40.546018Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T20:31:40.546027Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T20:31:53.986877Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T20:31:53.987039Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T20:31:53.987045Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T20:31:54.063239Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T20:31:54.063248Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T20:31:56.648053Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T20:31:56.648065Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T20:31:56.965183Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T20:31:56.965194Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T20:31:57.027327Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T20:31:57.027342Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T20:31:59.916992Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=474965 rent_listings=24345 total=15702691 -2026-03-15T20:32:04.424692Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T20:32:04.424881Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T20:32:04.424890Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T20:32:04.493173Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T20:32:04.493184Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T20:32:07.324815Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T20:32:07.324827Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T20:32:07.628171Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T20:32:07.628182Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T20:32:07.697976Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T20:32:07.697987Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T20:32:09.987127Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=474965 rent_listings=24345 total=15702691 -2026-03-15T20:32:15.239857Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T20:32:15.240016Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T20:32:15.240027Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T20:32:15.312610Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T20:32:15.312619Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T20:32:17.889502Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T20:32:17.889512Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T20:32:18.181929Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T20:32:18.181939Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T20:32:18.245757Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T20:32:18.245767Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T20:32:23.084864Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T20:32:23.085017Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T20:32:23.085025Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T20:32:23.149174Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T20:32:23.149184Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T20:32:25.785485Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T20:32:25.785496Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T20:32:26.076631Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T20:32:26.076644Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T20:32:26.135954Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T20:32:26.135967Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T20:32:28.972888Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=474965 rent_listings=24345 total=15702691 -2026-03-15T20:42:17.088723Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T20:42:17.088899Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T20:42:17.088907Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T20:42:17.150999Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T20:42:17.151009Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T20:42:19.827707Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T20:42:19.827719Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T20:42:20.135500Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T20:42:20.135509Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T20:42:20.197192Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T20:42:20.197202Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T20:42:56.103982Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T20:42:56.104138Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T20:42:56.104143Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T20:42:56.204428Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T20:42:56.204439Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T20:42:58.832976Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T20:42:58.832987Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T20:42:59.132876Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T20:42:59.132886Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T20:42:59.192137Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T20:42:59.192148Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T20:43:26.892462Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=474965 rent_listings=24345 total=15702691 -2026-03-15T20:56:11.923543Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T20:56:11.923747Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T20:56:11.923760Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T20:56:12.004141Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T20:56:12.004153Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T20:56:18.202087Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T20:56:18.202098Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T20:56:18.603337Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T20:56:18.603351Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T20:56:18.676290Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T20:56:18.676299Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T20:56:51.555700Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T20:56:51.555882Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T20:56:51.555890Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T20:56:51.649380Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T20:56:51.649390Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T20:56:54.479400Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T20:56:54.479413Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T20:56:54.787050Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T20:56:54.787063Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T20:56:54.853848Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T20:56:54.853857Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T20:57:26.731834Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=474965 rent_listings=24345 total=15702691 -2026-03-15T21:00:33.407080Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T21:00:33.407232Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T21:00:33.407238Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T21:00:33.499072Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T21:00:33.499081Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T21:00:36.274914Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T21:00:36.274924Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T21:00:36.575562Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T21:00:36.575572Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T21:00:36.638808Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T21:00:36.638817Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T21:00:50.949722Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=474965 rent_listings=24345 total=15702691 -2026-03-15T21:03:11.209421Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T21:03:11.209606Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T21:03:11.209612Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T21:03:11.289498Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T21:03:11.289508Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T21:03:13.875043Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T21:03:13.875053Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T21:03:14.208971Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T21:03:14.208982Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T21:03:14.272084Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T21:03:14.272095Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T21:03:28.932912Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T21:03:28.933073Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T21:03:28.933082Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T21:03:29.004139Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T21:03:29.004150Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T21:03:31.538874Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T21:03:31.538884Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T21:03:31.819659Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T21:03:31.819669Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T21:03:31.879197Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T21:03:31.879206Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T21:03:46.003768Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=474965 rent_listings=24345 total=15702691 -2026-03-15T21:19:16.107508Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T21:19:16.107694Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T21:19:16.107702Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T21:19:16.272588Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T21:19:16.272599Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T21:19:22.944816Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T21:19:22.944828Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T21:19:23.587534Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T21:19:23.589329Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T21:19:23.673638Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T21:19:23.673648Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T21:20:10.134367Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=474965 rent_listings=24345 total=15702691 -2026-03-15T21:20:10.173078Z INFO property_map_server::data::property: Feature columns from config numeric=55 enums=13 total=68 -2026-03-15T21:20:11.640174Z INFO property_map_server::data::property: Combined data selected rows=15702691 -2026-03-15T21:20:11.825306Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-03-15T21:20:12.283833Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-03-15T21:20:13.735551Z INFO property_map_server::data::property: Extracting string columns -2026-03-15T21:20:16.091555Z INFO property_map_server::data::property: Building enum features -2026-03-15T21:20:17.505895Z INFO property_map_server::data::property: Extracting renovation history -2026-03-15T21:20:19.730770Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829807 -2026-03-15T21:20:19.730780Z INFO property_map_server::data::property: Extracting listing features -2026-03-15T21:20:20.299294Z INFO property_map_server::data::property: Listing features extracted properties_with_features=412749 -2026-03-15T21:20:20.299302Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-03-15T21:20:21.284951Z INFO property_map_server::data::property: Building interned strings -2026-03-15T21:20:27.822185Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-03-15T21:20:30.681373Z INFO property_map_server::data::property: Data loading complete -2026-03-15T21:20:32.249224Z INFO property_map_server: Property data loaded rows=15702691 features=68 enums=13 -2026-03-15T21:20:32.249237Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-03-15T21:20:32.646329Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-03-15T21:20:32.646339Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-03-15T21:20:33.084366Z INFO property_map_server::data::property: H3 precomputation complete (15702691 cells) -2026-03-15T21:20:33.084392Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-03-15T21:20:33.084431Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-03-15T21:20:33.115170Z INFO property_map_server::data::poi: Loaded 678242 POIs -2026-03-15T21:20:33.231940Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-03-15T21:20:33.232512Z INFO property_map_server::data::poi: POI data loading complete. -2026-03-15T21:20:33.270242Z INFO property_map_server: POI data loaded pois=678242 -2026-03-15T21:20:33.270252Z INFO property_map_server: Building POI spatial grid index -2026-03-15T21:20:33.275905Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-03-15T21:20:33.275913Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-03-15T21:20:33.280404Z INFO property_map_server::data::places: Loaded 3474 places -2026-03-15T21:20:33.281434Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-03-15T21:20:33.281491Z INFO property_map_server: Place data loaded places=3474 -2026-03-15T21:20:33.281502Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-03-15T21:20:33.281509Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-03-15T21:20:33.282358Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-03-15T21:20:41.788648Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-03-15T21:20:42.014614Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-03-15T21:20:42.014635Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-03-15T21:20:42.107058Z INFO property_map_server: PMTiles loaded successfully -2026-03-15T21:20:42.150975Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-03-15T21:20:42.241257Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-03-15T21:20:42.241801Z INFO property_map_server: Precomputed features response groups=8 -2026-03-15T21:20:42.241820Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-03-15T21:20:42.361970Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-03-15T21:20:42.370041Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-03-15T21:20:42.375199Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-03-15T21:20:42.642209Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-03-15T21:20:42.651503Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-03-15T21:20:42.651536Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-03-15T21:20:42.651550Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-03-15T21:20:42.658771Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2780 -2026-03-15T21:20:42.658942Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=350 -2026-03-15T21:20:42.659104Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=355 -2026-03-15T21:20:42.661000Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=1849 -2026-03-15T21:20:42.661031Z INFO property_map_server: Travel time store loaded modes=4 -2026-03-15T21:20:42.661088Z INFO property_map_server: Precomputed AI filters system prompt -2026-03-15T21:20:43.239746Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:20:47.481371Z INFO property_map_server: All memory pages locked (mlockall) -2026-03-15T21:20:47.481419Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-03-15T21:21:42.708428Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:22:42.708082Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:23:42.708266Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:24:42.718391Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:25:41.332330Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T21:25:41.332500Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T21:25:41.332508Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T21:25:41.432307Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T21:25:41.432318Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T21:25:44.304936Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T21:25:44.304945Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T21:25:44.611586Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T21:25:44.613334Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T21:25:44.675390Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T21:25:44.675399Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T21:26:00.295681Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=474965 rent_listings=24345 total=15702691 -2026-03-15T21:26:00.312456Z INFO property_map_server::data::property: Feature columns from config numeric=55 enums=13 total=68 -2026-03-15T21:26:01.704637Z INFO property_map_server::data::property: Combined data selected rows=15702691 -2026-03-15T21:26:01.872395Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-03-15T21:26:02.248689Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-03-15T21:26:03.562896Z INFO property_map_server::data::property: Extracting string columns -2026-03-15T21:26:05.837707Z INFO property_map_server::data::property: Building enum features -2026-03-15T21:26:07.241019Z INFO property_map_server::data::property: Extracting renovation history -2026-03-15T21:26:09.414029Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829807 -2026-03-15T21:26:09.414038Z INFO property_map_server::data::property: Extracting listing features -2026-03-15T21:26:09.970429Z INFO property_map_server::data::property: Listing features extracted properties_with_features=412749 -2026-03-15T21:26:09.970438Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-03-15T21:26:10.866902Z INFO property_map_server::data::property: Building interned strings -2026-03-15T21:26:17.086286Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-03-15T21:26:19.719576Z INFO property_map_server::data::property: Data loading complete -2026-03-15T21:26:21.461788Z INFO property_map_server: Property data loaded rows=15702691 features=68 enums=13 -2026-03-15T21:26:21.461797Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-03-15T21:26:21.564319Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-03-15T21:26:21.564329Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-03-15T21:26:21.994793Z INFO property_map_server::data::property: H3 precomputation complete (15702691 cells) -2026-03-15T21:26:21.994838Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-03-15T21:26:21.994845Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-03-15T21:26:22.018732Z INFO property_map_server::data::poi: Loaded 678242 POIs -2026-03-15T21:26:22.133349Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-03-15T21:26:22.133928Z INFO property_map_server::data::poi: POI data loading complete. -2026-03-15T21:26:22.171652Z INFO property_map_server: POI data loaded pois=678242 -2026-03-15T21:26:22.171659Z INFO property_map_server: Building POI spatial grid index -2026-03-15T21:26:22.177174Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-03-15T21:26:22.177185Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-03-15T21:26:22.178952Z INFO property_map_server::data::places: Loaded 3474 places -2026-03-15T21:26:22.179710Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-03-15T21:26:22.179774Z INFO property_map_server: Place data loaded places=3474 -2026-03-15T21:26:22.179781Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-03-15T21:26:22.179785Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-03-15T21:26:22.183476Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-03-15T21:26:30.728685Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-03-15T21:26:30.967914Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-03-15T21:26:30.967934Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-03-15T21:26:31.095450Z INFO property_map_server: PMTiles loaded successfully -2026-03-15T21:26:31.145691Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-03-15T21:26:31.291690Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-03-15T21:26:31.292434Z INFO property_map_server: Precomputed features response groups=8 -2026-03-15T21:26:31.292449Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-03-15T21:26:31.424001Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-03-15T21:26:31.435471Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-03-15T21:26:31.438556Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-03-15T21:26:31.487488Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-03-15T21:26:31.492080Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-03-15T21:26:31.492166Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-03-15T21:26:31.492182Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-03-15T21:26:31.552671Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2780 -2026-03-15T21:26:31.566751Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=350 -2026-03-15T21:26:31.583207Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=355 -2026-03-15T21:26:31.611276Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=1849 -2026-03-15T21:26:31.611304Z INFO property_map_server: Travel time store loaded modes=4 -2026-03-15T21:26:31.611349Z INFO property_map_server: Precomputed AI filters system prompt -2026-03-15T21:26:32.183021Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:26:36.065617Z INFO property_map_server: All memory pages locked (mlockall) -2026-03-15T21:26:36.065653Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-03-15T21:26:39.187390Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T21:26:39.192134Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T21:26:39.203820Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T21:26:39.206632Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T21:26:39.219137Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T21:26:39.219143Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T21:26:39.233780Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T21:26:39.234321Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T21:26:40.962559Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-15T21:26:40.965073Z INFO property_map_server::routes::features: GET /api/features -2026-03-15T21:26:41.229268Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14962301 parallel=true cells_before_filter=687 cells_after_filter=687 truncated=false bounds=46.0000,-12.0000,56.5000,12.0000 filters=0 filters_raw="-" travel_entries=0 agg_ms=204.4 total_ms=226.3 -2026-03-15T21:27:31.658405Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:28:08.681718Z INFO property_map_server: Prometheus metrics initialized -2026-03-15T21:28:08.681878Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-15T21:28:08.681883Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-15T21:28:08.749237Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-15T21:28:08.749247Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-15T21:28:11.033956Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-15T21:28:11.033967Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-15T21:28:11.350626Z INFO property_map_server::data::property: buy listings joined rows=474965 -2026-03-15T21:28:11.352361Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-15T21:28:11.408617Z INFO property_map_server::data::property: rent listings joined rows=24345 -2026-03-15T21:28:11.408629Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-15T21:28:34.809978Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=474965 rent_listings=24345 total=15702691 -2026-03-15T21:28:34.810067Z INFO property_map_server::data::property: Feature columns from config numeric=55 enums=13 total=68 -2026-03-15T21:28:36.212393Z INFO property_map_server::data::property: Combined data selected rows=15702691 -2026-03-15T21:28:36.357174Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-03-15T21:28:36.708197Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-03-15T21:28:37.750679Z INFO property_map_server::data::property: Extracting string columns -2026-03-15T21:28:39.971444Z INFO property_map_server::data::property: Building enum features -2026-03-15T21:28:41.375658Z INFO property_map_server::data::property: Extracting renovation history -2026-03-15T21:28:43.534332Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829807 -2026-03-15T21:28:43.534341Z INFO property_map_server::data::property: Extracting listing features -2026-03-15T21:28:44.063198Z INFO property_map_server::data::property: Listing features extracted properties_with_features=412749 -2026-03-15T21:28:44.063207Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-03-15T21:28:44.984019Z INFO property_map_server::data::property: Building interned strings -2026-03-15T21:28:50.851336Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-03-15T21:28:53.262932Z INFO property_map_server::data::property: Data loading complete -2026-03-15T21:28:54.905369Z INFO property_map_server: Property data loaded rows=15702691 features=68 enums=13 -2026-03-15T21:28:54.905380Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-03-15T21:28:55.002205Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-03-15T21:28:55.002215Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-03-15T21:28:55.397111Z INFO property_map_server::data::property: H3 precomputation complete (15702691 cells) -2026-03-15T21:28:55.397137Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-03-15T21:28:55.397153Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-03-15T21:28:55.419145Z INFO property_map_server::data::poi: Loaded 678242 POIs -2026-03-15T21:28:55.531144Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-03-15T21:28:55.531706Z INFO property_map_server::data::poi: POI data loading complete. -2026-03-15T21:28:55.567985Z INFO property_map_server: POI data loaded pois=678242 -2026-03-15T21:28:55.567992Z INFO property_map_server: Building POI spatial grid index -2026-03-15T21:28:55.573226Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-03-15T21:28:55.573233Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-03-15T21:28:55.573743Z INFO property_map_server::data::places: Loaded 3474 places -2026-03-15T21:28:55.574459Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-03-15T21:28:55.574532Z INFO property_map_server: Place data loaded places=3474 -2026-03-15T21:28:55.574542Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-03-15T21:28:55.574549Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-03-15T21:28:55.578317Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-03-15T21:29:03.183680Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-03-15T21:29:03.405251Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-03-15T21:29:03.405268Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-03-15T21:29:03.434100Z INFO property_map_server: PMTiles loaded successfully -2026-03-15T21:29:03.477701Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-03-15T21:29:03.554483Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-03-15T21:29:03.554881Z INFO property_map_server: Precomputed features response groups=8 -2026-03-15T21:29:03.554897Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-03-15T21:29:03.617256Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-03-15T21:29:03.619944Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-03-15T21:29:03.623749Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-03-15T21:29:03.675548Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-03-15T21:29:03.684151Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-03-15T21:29:03.684193Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-03-15T21:29:03.684209Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-03-15T21:29:03.710851Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2780 -2026-03-15T21:29:03.711686Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=350 -2026-03-15T21:29:03.712508Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=355 -2026-03-15T21:29:03.719832Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=1849 -2026-03-15T21:29:03.719857Z INFO property_map_server: Travel time store loaded modes=4 -2026-03-15T21:29:03.719915Z INFO property_map_server: Precomputed AI filters system prompt -2026-03-15T21:29:04.283936Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:29:06.207339Z INFO property_map_server: All memory pages locked (mlockall) -2026-03-15T21:29:06.207379Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-03-15T21:30:03.765875Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:31:03.766908Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:32:03.766043Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:33:03.766227Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:34:03.765838Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:35:03.767373Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:36:03.766378Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:37:03.767873Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:38:03.766260Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:39:03.766874Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:40:03.766081Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:41:03.766181Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:42:03.764629Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:43:03.766341Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:44:03.765359Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:45:03.765298Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:46:03.766437Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:47:03.765492Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:48:03.765087Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:49:03.770788Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:50:03.777608Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:51:03.766162Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:52:03.765925Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:53:03.765007Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:54:03.765681Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:55:03.764567Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:56:03.770996Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:57:03.780547Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:58:03.765696Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T21:59:03.766040Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:00:03.768073Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:01:03.766610Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:02:03.766381Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:03:03.772124Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:04:03.765925Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:05:03.766612Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:06:03.766443Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:07:03.765680Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:08:03.766107Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:09:03.771436Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:10:03.766431Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:11:03.765836Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:12:03.765036Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:13:03.765945Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:14:03.766561Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:15:03.766491Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:16:03.765286Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:17:03.766117Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:18:03.765055Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:19:03.765059Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:20:03.763936Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:21:03.776040Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:22:03.764699Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:23:03.766017Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-15T22:24:03.765408Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request diff --git a/server-rs/logs/server.log.2026-03-17 b/server-rs/logs/server.log.2026-03-17 deleted file mode 100644 index 94ea237..0000000 --- a/server-rs/logs/server.log.2026-03-17 +++ /dev/null @@ -1,335 +0,0 @@ -2026-03-17T07:30:51.418735Z INFO property_map_server: Prometheus metrics initialized -2026-03-17T07:30:51.418950Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-17T07:30:51.418957Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-17T07:30:51.591217Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-17T07:30:51.591228Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-17T07:31:03.482386Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-17T07:31:03.482398Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-17T07:31:06.206982Z INFO property_map_server::data::property: buy listings joined rows=457076 -2026-03-17T07:31:06.207003Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-17T07:31:08.031097Z INFO property_map_server::data::property: rent listings joined rows=122594 -2026-03-17T07:31:08.031106Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-17T07:32:00.170695Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=457076 rent_listings=122594 total=15783051 -2026-03-17T07:32:00.170797Z INFO property_map_server::data::property: Feature columns from config numeric=55 enums=13 total=68 -2026-03-17T07:32:01.527808Z INFO property_map_server::data::property: Combined data selected rows=15783051 -2026-03-17T07:32:01.738022Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-03-17T07:32:02.164093Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-03-17T07:32:03.346133Z INFO property_map_server::data::property: Extracting string columns -2026-03-17T07:32:05.803712Z INFO property_map_server::data::property: Building enum features -2026-03-17T07:32:07.359340Z INFO property_map_server::data::property: Extracting renovation history -2026-03-17T07:32:09.567602Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829807 -2026-03-17T07:32:09.567612Z INFO property_map_server::data::property: Extracting listing features -2026-03-17T07:32:10.194293Z INFO property_map_server::data::property: Listing features extracted properties_with_features=518063 -2026-03-17T07:32:10.194304Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-03-17T07:32:11.130691Z INFO property_map_server::data::property: Building interned strings -2026-03-17T07:32:17.391642Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-03-17T07:32:20.030170Z INFO property_map_server::data::property: Data loading complete -2026-03-17T07:32:21.686179Z INFO property_map_server: Property data loaded rows=15783051 features=68 enums=13 -2026-03-17T07:32:21.686189Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-03-17T07:32:22.119885Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-03-17T07:32:22.119896Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-03-17T07:32:22.577256Z INFO property_map_server::data::property: H3 precomputation complete (15783051 cells) -2026-03-17T07:32:22.577783Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-03-17T07:32:22.577790Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-03-17T07:32:22.606628Z INFO property_map_server::data::poi: Loaded 678242 POIs -2026-03-17T07:32:22.723396Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-03-17T07:32:22.724011Z INFO property_map_server::data::poi: POI data loading complete. -2026-03-17T07:32:22.763121Z INFO property_map_server: POI data loaded pois=678242 -2026-03-17T07:32:22.763130Z INFO property_map_server: Building POI spatial grid index -2026-03-17T07:32:22.768959Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-03-17T07:32:22.768968Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-03-17T07:32:22.772858Z INFO property_map_server::data::places: Loaded 3474 places -2026-03-17T07:32:22.773855Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-03-17T07:32:22.774015Z INFO property_map_server: Place data loaded places=3474 -2026-03-17T07:32:22.774027Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-03-17T07:32:22.774032Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-03-17T07:32:22.787541Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-03-17T07:32:31.937299Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-03-17T07:32:32.173875Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-03-17T07:32:32.174039Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-03-17T07:32:32.271059Z INFO property_map_server: PMTiles loaded successfully -2026-03-17T07:32:32.315679Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-03-17T07:32:32.394604Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-03-17T07:32:32.394776Z INFO property_map_server: Precomputed features response groups=8 -2026-03-17T07:32:32.394795Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-03-17T07:32:32.593635Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-03-17T07:32:32.598562Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-03-17T07:32:32.602615Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-03-17T07:32:32.700044Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-03-17T07:32:32.703401Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-03-17T07:32:32.703422Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-03-17T07:32:32.703435Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-03-17T07:32:33.124089Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2780 -2026-03-17T07:32:33.129130Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=350 -2026-03-17T07:32:33.136319Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=355 -2026-03-17T07:32:33.199470Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=1869 -2026-03-17T07:32:33.199512Z INFO property_map_server: Travel time store loaded modes=4 -2026-03-17T07:32:33.199568Z INFO property_map_server: Precomputed AI filters system prompt -2026-03-17T07:32:33.247029Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T07:32:41.343709Z INFO property_map_server: All memory pages locked (mlockall) -2026-03-17T07:32:41.343741Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-03-17T07:33:33.247983Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T07:34:33.248115Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T07:35:33.247077Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T07:36:33.246775Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T07:37:33.245462Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T07:38:33.245965Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T07:39:33.245978Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T07:40:33.246783Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T07:41:33.245498Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T07:42:33.245587Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T07:43:33.245907Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T07:44:33.246696Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T07:45:33.246006Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T07:46:30.259530Z INFO property_map_server: Prometheus metrics initialized -2026-03-17T07:46:30.259726Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-17T07:46:30.259735Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-17T07:46:30.325086Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-17T07:46:30.325097Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-17T07:46:32.757459Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-17T07:46:32.757469Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-17T07:46:33.043727Z INFO property_map_server::data::property: buy listings joined rows=457076 -2026-03-17T07:46:33.043750Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-17T07:46:33.139537Z INFO property_map_server::data::property: rent listings joined rows=122594 -2026-03-17T07:46:33.139545Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-17T08:31:50.056528Z INFO property_map_server: Prometheus metrics initialized -2026-03-17T08:31:50.056716Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-17T08:31:50.056723Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-17T08:31:50.259958Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-17T08:31:50.259971Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-17T08:32:02.569149Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-17T08:32:02.569201Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-17T08:32:03.699632Z INFO property_map_server::data::property: buy listings joined rows=457076 -2026-03-17T08:32:03.699651Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-17T08:32:03.826074Z INFO property_map_server::data::property: rent listings joined rows=122594 -2026-03-17T08:32:03.826084Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-17T08:32:43.785403Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=457076 rent_listings=122594 total=15783051 -2026-03-17T08:32:43.785499Z INFO property_map_server::data::property: Feature columns from config numeric=55 enums=13 total=68 -2026-03-17T08:32:45.220814Z INFO property_map_server::data::property: Combined data selected rows=15783051 -2026-03-17T08:32:45.421342Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-03-17T08:32:45.834125Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-03-17T08:32:47.061266Z INFO property_map_server::data::property: Extracting string columns -2026-03-17T08:32:49.344991Z INFO property_map_server::data::property: Building enum features -2026-03-17T08:32:50.754854Z INFO property_map_server::data::property: Extracting renovation history -2026-03-17T08:32:52.906620Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829807 -2026-03-17T08:32:52.906629Z INFO property_map_server::data::property: Extracting listing features -2026-03-17T08:32:53.563050Z INFO property_map_server::data::property: Listing features extracted properties_with_features=518063 -2026-03-17T08:32:53.563059Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-03-17T08:32:54.502830Z INFO property_map_server::data::property: Building interned strings -2026-03-17T08:33:00.593312Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-03-17T08:33:03.178312Z INFO property_map_server::data::property: Data loading complete -2026-03-17T08:33:04.964374Z INFO property_map_server: Property data loaded rows=15783051 features=68 enums=13 -2026-03-17T08:33:04.964383Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-03-17T08:33:05.065094Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-03-17T08:33:05.065102Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-03-17T08:33:05.486703Z INFO property_map_server::data::property: H3 precomputation complete (15783051 cells) -2026-03-17T08:33:05.486729Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-03-17T08:33:05.486734Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-03-17T08:33:05.529351Z INFO property_map_server::data::poi: Loaded 678242 POIs -2026-03-17T08:33:05.642021Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-03-17T08:33:05.642611Z INFO property_map_server::data::poi: POI data loading complete. -2026-03-17T08:33:05.681563Z INFO property_map_server: POI data loaded pois=678242 -2026-03-17T08:33:05.681574Z INFO property_map_server: Building POI spatial grid index -2026-03-17T08:33:05.687162Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-03-17T08:33:05.687169Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-03-17T08:33:05.705798Z INFO property_map_server::data::places: Loaded 3474 places -2026-03-17T08:33:05.706609Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-03-17T08:33:05.706675Z INFO property_map_server: Place data loaded places=3474 -2026-03-17T08:33:05.706689Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-03-17T08:33:05.706695Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-03-17T08:33:05.780250Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-03-17T08:33:14.655514Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-03-17T08:33:14.888462Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-03-17T08:33:14.888478Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-03-17T08:33:15.021983Z INFO property_map_server: PMTiles loaded successfully -2026-03-17T08:33:15.065572Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-03-17T08:33:15.140720Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-03-17T08:33:15.141331Z INFO property_map_server: Precomputed features response groups=8 -2026-03-17T08:33:15.141349Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-03-17T08:33:15.246791Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-03-17T08:33:15.254863Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-03-17T08:33:15.258892Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-03-17T08:33:15.329192Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-03-17T08:33:15.333036Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-03-17T08:33:15.333055Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-03-17T08:33:15.333066Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-03-17T08:33:15.398969Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2780 -2026-03-17T08:33:15.403743Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=350 -2026-03-17T08:33:15.404640Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=355 -2026-03-17T08:33:15.414586Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=1869 -2026-03-17T08:33:15.414612Z INFO property_map_server: Travel time store loaded modes=4 -2026-03-17T08:33:15.414666Z INFO property_map_server: Precomputed AI filters system prompt -2026-03-17T08:33:16.003045Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T08:33:19.581012Z INFO property_map_server: All memory pages locked (mlockall) -2026-03-17T08:33:19.581049Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-03-17T08:33:22.213990Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-17T08:33:22.216578Z INFO property_map_server::routes::features: GET /api/features -2026-03-17T08:33:22.227193Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-17T08:33:22.232847Z INFO property_map_server::routes::features: GET /api/features -2026-03-17T08:33:22.409378Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=145554 parallel=true cells_before_filter=455 cells_after_filter=297 truncated=false bounds=51.4896,-0.1648,51.5404,-0.0952 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.4 agg_ms=7.5 json_ms=0.8 total_ms=8.7 -2026-03-17T08:33:22.446379Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=145554 parallel=true cells_before_filter=455 cells_after_filter=297 truncated=false bounds=51.4896,-0.1648,51.5404,-0.0952 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=4.1 json_ms=0.5 total_ms=4.7 -2026-03-17T08:34:15.461433Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T08:34:29.710796Z INFO property_map_server::routes::features: GET /api/features -2026-03-17T08:34:29.713513Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-03-17T08:34:30.274542Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=145554 parallel=true cells_before_filter=455 cells_after_filter=297 truncated=false bounds=51.4896,-0.1648,51.5404,-0.0952 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=2.5 json_ms=0.6 total_ms=3.2 -2026-03-17T08:34:31.462250Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da4987ffff resolution=9 total_count=243 filters=1 filters_raw="Listing status:Historical sale" ms=0.2 -2026-03-17T08:34:31.674788Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=82474 parallel=true cells_before_filter=296 cells_after_filter=201 truncated=false bounds=51.4896,-0.1524,51.5404,-0.1076 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=0.9 json_ms=0.5 total_ms=1.5 -2026-03-17T08:34:32.542179Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da4d33ffff resolution=9 total_count=746 filters=1 filters_raw="Listing status:Historical sale" ms=0.5 -2026-03-17T08:34:34.469487Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da4d33ffff resolution=9 total_count=6 filters=1 filters_raw="Listing status:For rent" ms=0.1 -2026-03-17T08:34:34.620706Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=82474 parallel=true cells_before_filter=274 cells_after_filter=196 truncated=false bounds=51.4896,-0.1524,51.5404,-0.1076 filters=1 filters_raw="Listing status:For rent" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=0.7 json_ms=0.4 total_ms=1.1 -2026-03-17T08:35:15.464691Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T08:36:15.461317Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T08:37:15.462465Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T08:38:15.461428Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T08:39:15.463264Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T08:40:15.466916Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T08:41:15.463402Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T08:42:15.462539Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T08:43:15.461880Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T08:44:15.462263Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T08:45:15.461882Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T08:46:15.462228Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T08:47:15.462476Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T08:47:28.935265Z INFO property_map_server: Prometheus metrics initialized -2026-03-17T08:47:28.935449Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-17T08:47:28.935457Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-17T08:47:29.007775Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-17T08:47:29.007785Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-17T08:47:31.674791Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-17T08:47:31.674802Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-17T08:47:31.972527Z INFO property_map_server::data::property: buy listings joined rows=457076 -2026-03-17T08:47:31.972545Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-17T08:47:32.082470Z INFO property_map_server::data::property: rent listings joined rows=122594 -2026-03-17T08:47:32.082480Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-17T08:47:43.806418Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=457076 rent_listings=122594 total=15783051 -2026-03-17T08:47:43.806509Z INFO property_map_server::data::property: Feature columns from config numeric=55 enums=13 total=68 -2026-03-17T08:47:45.135285Z INFO property_map_server::data::property: Combined data selected rows=15783051 -2026-03-17T08:47:45.326377Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-03-17T08:47:45.712528Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-03-17T08:47:46.876195Z INFO property_map_server::data::property: Extracting string columns -2026-03-17T08:47:49.145516Z INFO property_map_server::data::property: Building enum features -2026-03-17T08:47:50.661409Z INFO property_map_server::data::property: Extracting renovation history -2026-03-17T08:47:52.947453Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829807 -2026-03-17T08:47:52.947462Z INFO property_map_server::data::property: Extracting listing features -2026-03-17T08:47:53.599162Z INFO property_map_server::data::property: Listing features extracted properties_with_features=518063 -2026-03-17T08:47:53.599171Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-03-17T08:47:54.619942Z INFO property_map_server::data::property: Building interned strings -2026-03-17T08:48:00.802774Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-03-17T08:48:03.547995Z INFO property_map_server::data::property: Data loading complete -2026-03-17T08:48:05.049275Z INFO property_map_server: Property data loaded rows=15783051 features=68 enums=13 -2026-03-17T08:48:05.049293Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-03-17T08:48:05.459943Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-03-17T08:48:05.459953Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-03-17T08:48:05.865563Z INFO property_map_server::data::property: H3 precomputation complete (15783051 cells) -2026-03-17T08:48:05.865637Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-03-17T08:48:05.865651Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-03-17T08:48:05.886166Z INFO property_map_server::data::poi: Loaded 678242 POIs -2026-03-17T08:48:06.006159Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-03-17T08:48:06.006744Z INFO property_map_server::data::poi: POI data loading complete. -2026-03-17T08:48:06.043360Z INFO property_map_server: POI data loaded pois=678242 -2026-03-17T08:48:06.043368Z INFO property_map_server: Building POI spatial grid index -2026-03-17T08:48:06.048757Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-03-17T08:48:06.048766Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-03-17T08:48:06.049291Z INFO property_map_server::data::places: Loaded 3474 places -2026-03-17T08:48:06.050002Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-03-17T08:48:06.050053Z INFO property_map_server: Place data loaded places=3474 -2026-03-17T08:48:06.050061Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-03-17T08:48:06.050064Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-03-17T08:48:06.062151Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-03-17T08:48:15.297171Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-03-17T08:48:15.545357Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-03-17T08:48:15.545379Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-03-17T08:48:15.640450Z INFO property_map_server: PMTiles loaded successfully -2026-03-17T08:48:15.684715Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-03-17T08:48:15.789766Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-03-17T08:48:15.790261Z INFO property_map_server: Precomputed features response groups=8 -2026-03-17T08:48:15.790275Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-03-17T08:48:15.852396Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-03-17T08:48:15.854872Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-03-17T08:48:15.858800Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-03-17T08:48:15.911308Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-03-17T08:48:15.915275Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-03-17T08:48:15.915303Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-03-17T08:48:15.915316Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-03-17T08:48:16.153964Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2780 -2026-03-17T08:48:16.155556Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=350 -2026-03-17T08:48:16.156564Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=355 -2026-03-17T08:48:16.168132Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=1869 -2026-03-17T08:48:16.168166Z INFO property_map_server: Travel time store loaded modes=4 -2026-03-17T08:48:16.168228Z INFO property_map_server: Precomputed AI filters system prompt -2026-03-17T08:48:16.774064Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T08:48:18.295547Z INFO property_map_server: All memory pages locked (mlockall) -2026-03-17T08:48:18.295586Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-03-17T08:49:16.216499Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T08:50:16.215664Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T08:51:16.214094Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T08:52:16.215038Z WARN property_map_server::pocketbase: PocketBase invites count query failed: 400 Bad Request -2026-03-17T08:53:00.492875Z INFO property_map_server: Prometheus metrics initialized -2026-03-17T08:53:00.493149Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-03-17T08:53:00.493156Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-03-17T08:53:00.728565Z INFO property_map_server::data::property: Postcode features loaded rows=1262367 -2026-03-17T08:53:00.728575Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-03-17T08:53:03.595748Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203381 -2026-03-17T08:53:03.595759Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-03-17T08:53:03.975669Z INFO property_map_server::data::property: buy listings joined rows=457076 -2026-03-17T08:53:03.975687Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-03-17T08:53:04.083853Z INFO property_map_server::data::property: rent listings joined rows=122594 -2026-03-17T08:53:04.083863Z INFO property_map_server::data::property: Concatenating all data sources -2026-03-17T08:53:19.531799Z INFO property_map_server::data::property: All data sources combined properties=15203381 buy_listings=457076 rent_listings=122594 total=15783051 -2026-03-17T08:53:19.531893Z INFO property_map_server::data::property: Feature columns from config numeric=55 enums=13 total=68 -2026-03-17T08:53:20.977401Z INFO property_map_server::data::property: Combined data selected rows=15783051 -2026-03-17T08:53:21.166389Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-03-17T08:53:21.555895Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-03-17T08:53:22.777545Z INFO property_map_server::data::property: Extracting string columns -2026-03-17T08:53:25.067611Z INFO property_map_server::data::property: Building enum features -2026-03-17T08:53:26.433346Z INFO property_map_server::data::property: Extracting renovation history -2026-03-17T08:53:28.667594Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829807 -2026-03-17T08:53:28.667602Z INFO property_map_server::data::property: Extracting listing features -2026-03-17T08:53:29.309247Z INFO property_map_server::data::property: Listing features extracted properties_with_features=518063 -2026-03-17T08:53:29.309255Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-03-17T08:53:30.205482Z INFO property_map_server::data::property: Building interned strings -2026-03-17T08:53:36.247881Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-03-17T08:53:38.758705Z INFO property_map_server::data::property: Data loading complete -2026-03-17T08:53:40.180446Z INFO property_map_server: Property data loaded rows=15783051 features=68 enums=13 -2026-03-17T08:53:40.180455Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-03-17T08:53:40.577820Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-03-17T08:53:40.577828Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-03-17T08:53:40.972135Z INFO property_map_server::data::property: H3 precomputation complete (15783051 cells) -2026-03-17T08:53:40.972155Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-03-17T08:53:40.972161Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-03-17T08:53:41.018292Z INFO property_map_server::data::poi: Loaded 678242 POIs -2026-03-17T08:53:41.129204Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-03-17T08:53:41.129769Z INFO property_map_server::data::poi: POI data loading complete. -2026-03-17T08:53:41.168005Z INFO property_map_server: POI data loaded pois=678242 -2026-03-17T08:53:41.168011Z INFO property_map_server: Building POI spatial grid index -2026-03-17T08:53:41.173291Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-03-17T08:53:41.173297Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-03-17T08:53:41.175229Z INFO property_map_server::data::places: Loaded 3474 places -2026-03-17T08:53:41.176075Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-03-17T08:53:41.176126Z INFO property_map_server: Place data loaded places=3474 -2026-03-17T08:53:41.176134Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-03-17T08:53:41.176137Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-03-17T08:53:41.178186Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-03-17T08:53:51.542107Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-03-17T08:53:51.769077Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-03-17T08:53:51.769098Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-03-17T08:53:51.769313Z INFO property_map_server: PMTiles loaded successfully -2026-03-17T08:53:51.811454Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-03-17T08:53:51.881249Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-03-17T08:53:51.881405Z INFO property_map_server: Precomputed features response groups=8 -2026-03-17T08:53:51.881422Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-03-17T08:53:51.933372Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-03-17T08:53:51.935544Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-03-17T08:53:51.938605Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-03-17T08:53:51.988188Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-03-17T08:53:51.992737Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-03-17T08:53:51.992761Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-03-17T08:53:51.992778Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-03-17T08:53:52.012596Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2780 -2026-03-17T08:53:52.012912Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=350 -2026-03-17T08:53:52.013296Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=355 -2026-03-17T08:53:52.015215Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=1869 -2026-03-17T08:53:52.015233Z INFO property_map_server: Travel time store loaded modes=4 -2026-03-17T08:53:52.015276Z INFO property_map_server: Precomputed AI filters system prompt -2026-03-17T08:53:54.777281Z INFO property_map_server: All memory pages locked (mlockall) -2026-03-17T08:53:54.777322Z INFO property_map_server: Server listening on 0.0.0.0:8001 diff --git a/server-rs/logs/server.log.2026-04-04 b/server-rs/logs/server.log.2026-04-04 deleted file mode 100644 index 9f47bc1..0000000 --- a/server-rs/logs/server.log.2026-04-04 +++ /dev/null @@ -1,1958 +0,0 @@ -2026-04-04T09:28:02.133890Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T09:28:02.134037Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-04-04T09:28:02.134042Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-04-04T09:28:02.190205Z INFO property_map_server::data::property: Postcode features loaded rows=1262364 -2026-04-04T09:28:02.190214Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-04-04T09:28:04.392037Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203393 -2026-04-04T09:28:04.392047Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-04-04T09:28:04.770425Z INFO property_map_server::data::property: buy listings joined rows=1060501 -2026-04-04T09:28:04.770442Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-04-04T09:28:04.875727Z INFO property_map_server::data::property: rent listings joined rows=266585 -2026-04-04T09:28:04.875738Z INFO property_map_server::data::property: Concatenating all data sources -2026-04-04T09:28:09.805925Z INFO property_map_server::data::property: All data sources combined properties=15203393 buy_listings=1060501 rent_listings=266585 total=16530479 -2026-04-04T09:28:09.806015Z INFO property_map_server::data::property: Feature columns from config numeric=58 enums=7 total=65 -2026-04-04T09:28:11.207110Z INFO property_map_server::data::property: Combined data selected rows=16530479 -2026-04-04T09:28:11.362341Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-04-04T09:28:11.727944Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-04-04T09:28:12.922797Z INFO property_map_server::data::property: Extracting string columns -2026-04-04T09:28:15.269208Z INFO property_map_server::data::property: Building enum features -2026-04-04T09:28:16.601348Z INFO property_map_server::data::property: Extracting renovation history -2026-04-04T09:28:18.638703Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829784 -2026-04-04T09:28:18.638711Z INFO property_map_server::data::property: Extracting listing features -2026-04-04T09:28:19.310875Z INFO property_map_server::data::property: Listing features extracted properties_with_features=527541 -2026-04-04T09:28:19.310886Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-04-04T09:28:20.259288Z INFO property_map_server::data::property: Building interned strings -2026-04-04T09:28:26.626582Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-04-04T09:28:29.216545Z INFO property_map_server::data::property: Data loading complete -2026-04-04T09:28:30.912405Z INFO property_map_server: Property data loaded rows=16530479 features=65 enums=7 -2026-04-04T09:28:30.912414Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-04-04T09:28:31.009464Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-04-04T09:28:31.009472Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-04-04T09:28:31.412921Z INFO property_map_server::data::property: H3 precomputation complete (16530479 cells) -2026-04-04T09:28:31.412990Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-04-04T09:28:31.413014Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-04-04T09:28:31.431682Z INFO property_map_server::data::poi: Loaded 550611 POIs -2026-04-04T09:28:31.520555Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-04-04T09:28:31.521010Z INFO property_map_server::data::poi: POI data loading complete. -2026-04-04T09:28:31.550742Z INFO property_map_server: POI data loaded pois=550611 -2026-04-04T09:28:31.550748Z INFO property_map_server: Building POI spatial grid index -2026-04-04T09:28:31.555128Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-04-04T09:28:31.555134Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-04-04T09:28:31.555637Z INFO property_map_server::data::places: Loaded 3474 places -2026-04-04T09:28:31.556345Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-04-04T09:28:31.556396Z INFO property_map_server: Place data loaded places=3474 -2026-04-04T09:28:31.556403Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-04-04T09:28:31.556406Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-04-04T09:28:31.557177Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-04-04T09:28:38.911450Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-04-04T09:28:39.131253Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-04-04T09:28:39.267705Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-04-04T09:28:39.267756Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-04-04T09:28:39.267963Z INFO property_map_server: PMTiles loaded successfully -2026-04-04T09:28:39.302245Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-04-04T09:28:39.327456Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-04-04T09:28:39.327501Z INFO property_map_server: Precomputed features response groups=7 -2026-04-04T09:28:39.327513Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-04-04T09:28:39.395026Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-04-04T09:28:39.407977Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-04-04T09:28:39.410968Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-04-04T09:28:39.456520Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-04-04T09:28:39.460437Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-04-04T09:28:39.460481Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-04-04T09:28:39.460494Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-04-04T09:28:39.462007Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2753 -2026-04-04T09:28:39.463115Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=2753 -2026-04-04T09:28:39.464371Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=2753 -2026-04-04T09:28:39.465486Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=2752 -2026-04-04T09:28:39.465504Z INFO property_map_server: Travel time store loaded modes=4 -2026-04-04T09:28:39.465545Z INFO property_map_server: Precomputed AI filters system prompt -2026-04-04T09:28:40.970827Z INFO property_map_server: All memory pages locked (mlockall) -2026-04-04T09:28:40.970864Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-04-04T09:28:42.930383Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:28:42.931487Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:28:46.848314Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:28:46.848317Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:28:47.894333Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4416643 parallel=true cells_before_filter=1382 cells_after_filter=1382 truncated=false bounds=51.1305,-0.9325,51.9441,1.3087 filters=2 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:1.6" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=34.8 json_ms=0.7 total_ms=35.6 -2026-04-04T09:28:47.926819Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=4416643 filters=2 total=3082979 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:1.6" ms=65.9 -2026-04-04T09:29:12.967785Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T09:29:12.967973Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-04-04T09:29:12.967985Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-04-04T09:29:13.024153Z INFO property_map_server::data::property: Postcode features loaded rows=1262364 -2026-04-04T09:29:13.024163Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-04-04T09:29:15.263127Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203393 -2026-04-04T09:29:15.263137Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-04-04T09:29:15.633029Z INFO property_map_server::data::property: buy listings joined rows=1060501 -2026-04-04T09:29:15.633050Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-04-04T09:29:15.737844Z INFO property_map_server::data::property: rent listings joined rows=266585 -2026-04-04T09:29:15.737854Z INFO property_map_server::data::property: Concatenating all data sources -2026-04-04T09:29:18.183240Z INFO property_map_server::data::property: All data sources combined properties=15203393 buy_listings=1060501 rent_listings=266585 total=16530479 -2026-04-04T09:29:18.183322Z INFO property_map_server::data::property: Feature columns from config numeric=58 enums=7 total=65 -2026-04-04T09:29:19.513390Z INFO property_map_server::data::property: Combined data selected rows=16530479 -2026-04-04T09:29:19.677045Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-04-04T09:29:20.071686Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-04-04T09:29:21.318336Z INFO property_map_server::data::property: Extracting string columns -2026-04-04T09:29:23.651099Z INFO property_map_server::data::property: Building enum features -2026-04-04T09:29:24.994656Z INFO property_map_server::data::property: Extracting renovation history -2026-04-04T09:29:27.068157Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829784 -2026-04-04T09:29:27.068165Z INFO property_map_server::data::property: Extracting listing features -2026-04-04T09:29:27.751724Z INFO property_map_server::data::property: Listing features extracted properties_with_features=527541 -2026-04-04T09:29:27.751733Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-04-04T09:29:28.694827Z INFO property_map_server::data::property: Building interned strings -2026-04-04T09:29:34.992916Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-04-04T09:29:37.667623Z INFO property_map_server::data::property: Data loading complete -2026-04-04T09:29:39.273916Z INFO property_map_server: Property data loaded rows=16530479 features=65 enums=7 -2026-04-04T09:29:39.273925Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-04-04T09:29:39.372482Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-04-04T09:29:39.372490Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-04-04T09:29:39.769884Z INFO property_map_server::data::property: H3 precomputation complete (16530479 cells) -2026-04-04T09:29:39.769913Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-04-04T09:29:39.769921Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-04-04T09:29:39.787406Z INFO property_map_server::data::poi: Loaded 550611 POIs -2026-04-04T09:29:39.878047Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-04-04T09:29:39.878478Z INFO property_map_server::data::poi: POI data loading complete. -2026-04-04T09:29:39.908354Z INFO property_map_server: POI data loaded pois=550611 -2026-04-04T09:29:39.908363Z INFO property_map_server: Building POI spatial grid index -2026-04-04T09:29:39.913096Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-04-04T09:29:39.913110Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-04-04T09:29:39.913711Z INFO property_map_server::data::places: Loaded 3474 places -2026-04-04T09:29:39.914446Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-04-04T09:29:39.914500Z INFO property_map_server: Place data loaded places=3474 -2026-04-04T09:29:39.914508Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-04-04T09:29:39.914511Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-04-04T09:29:39.919966Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-04-04T09:29:46.391484Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-04-04T09:29:46.624748Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-04-04T09:29:46.767446Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-04-04T09:29:46.767498Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-04-04T09:29:46.767759Z INFO property_map_server: PMTiles loaded successfully -2026-04-04T09:29:46.802002Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-04-04T09:29:46.830381Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-04-04T09:29:46.830436Z INFO property_map_server: Precomputed features response groups=7 -2026-04-04T09:29:46.830456Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-04-04T09:29:46.876331Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-04-04T09:29:46.878597Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-04-04T09:29:46.881305Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-04-04T09:29:46.926624Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-04-04T09:29:46.929859Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-04-04T09:29:46.929879Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-04-04T09:29:46.929891Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-04-04T09:29:46.931340Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2753 -2026-04-04T09:29:46.932597Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=2753 -2026-04-04T09:29:46.934014Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=2753 -2026-04-04T09:29:46.935056Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=2752 -2026-04-04T09:29:46.935073Z INFO property_map_server: Travel time store loaded modes=4 -2026-04-04T09:29:46.935117Z INFO property_map_server: Precomputed AI filters system prompt -2026-04-04T09:29:48.435168Z INFO property_map_server: All memory pages locked (mlockall) -2026-04-04T09:29:48.435208Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-04-04T09:29:53.178063Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T09:29:53.178219Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-04-04T09:29:53.178227Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-04-04T09:29:53.237453Z INFO property_map_server::data::property: Postcode features loaded rows=1262364 -2026-04-04T09:29:53.237463Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-04-04T09:29:55.568450Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203393 -2026-04-04T09:29:55.568461Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-04-04T09:29:55.952152Z INFO property_map_server::data::property: buy listings joined rows=1060501 -2026-04-04T09:29:55.952176Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-04-04T09:29:56.057647Z INFO property_map_server::data::property: rent listings joined rows=266585 -2026-04-04T09:29:56.057657Z INFO property_map_server::data::property: Concatenating all data sources -2026-04-04T09:29:59.507785Z INFO property_map_server::data::property: All data sources combined properties=15203393 buy_listings=1060501 rent_listings=266585 total=16530479 -2026-04-04T09:29:59.507871Z INFO property_map_server::data::property: Feature columns from config numeric=58 enums=7 total=65 -2026-04-04T09:30:00.796614Z INFO property_map_server::data::property: Combined data selected rows=16530479 -2026-04-04T09:30:00.951162Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-04-04T09:30:01.374651Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-04-04T09:30:02.701166Z INFO property_map_server::data::property: Extracting string columns -2026-04-04T09:30:05.005794Z INFO property_map_server::data::property: Building enum features -2026-04-04T09:30:06.640861Z INFO property_map_server::data::property: Extracting renovation history -2026-04-04T09:30:08.691580Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829784 -2026-04-04T09:30:08.691588Z INFO property_map_server::data::property: Extracting listing features -2026-04-04T09:30:09.363379Z INFO property_map_server::data::property: Listing features extracted properties_with_features=527541 -2026-04-04T09:30:09.363389Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-04-04T09:30:10.294593Z INFO property_map_server::data::property: Building interned strings -2026-04-04T09:30:17.251354Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-04-04T09:30:21.213691Z INFO property_map_server::data::property: Data loading complete -2026-04-04T09:30:23.142430Z INFO property_map_server: Property data loaded rows=16530479 features=65 enums=7 -2026-04-04T09:30:23.142439Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-04-04T09:30:23.254324Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-04-04T09:30:23.254333Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-04-04T09:30:23.671848Z INFO property_map_server::data::property: H3 precomputation complete (16530479 cells) -2026-04-04T09:30:23.671900Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-04-04T09:30:23.671918Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-04-04T09:30:23.691917Z INFO property_map_server::data::poi: Loaded 550611 POIs -2026-04-04T09:30:23.787945Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-04-04T09:30:23.788397Z INFO property_map_server::data::poi: POI data loading complete. -2026-04-04T09:30:23.817204Z INFO property_map_server: POI data loaded pois=550611 -2026-04-04T09:30:23.817212Z INFO property_map_server: Building POI spatial grid index -2026-04-04T09:30:23.821789Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-04-04T09:30:23.821797Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-04-04T09:30:23.822354Z INFO property_map_server::data::places: Loaded 3474 places -2026-04-04T09:30:23.823118Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-04-04T09:30:23.823171Z INFO property_map_server: Place data loaded places=3474 -2026-04-04T09:30:23.823180Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-04-04T09:30:23.823184Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-04-04T09:30:23.825054Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-04-04T09:30:30.250379Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-04-04T09:30:30.485512Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-04-04T09:30:30.626415Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-04-04T09:30:30.626502Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-04-04T09:30:30.626707Z INFO property_map_server: PMTiles loaded successfully -2026-04-04T09:30:30.662016Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-04-04T09:30:30.704107Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-04-04T09:30:30.704160Z INFO property_map_server: Precomputed features response groups=7 -2026-04-04T09:30:30.704174Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-04-04T09:30:30.766670Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-04-04T09:30:30.769089Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-04-04T09:30:30.772132Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-04-04T09:30:30.818511Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-04-04T09:30:30.826566Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-04-04T09:30:30.826591Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-04-04T09:30:30.826606Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-04-04T09:30:30.850264Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2753 -2026-04-04T09:30:30.864447Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=2753 -2026-04-04T09:30:30.873440Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=2753 -2026-04-04T09:30:30.880262Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=2752 -2026-04-04T09:30:30.880285Z INFO property_map_server: Travel time store loaded modes=4 -2026-04-04T09:30:30.880334Z INFO property_map_server: Precomputed AI filters system prompt -2026-04-04T09:30:32.406474Z INFO property_map_server: All memory pages locked (mlockall) -2026-04-04T09:30:32.406509Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-04-04T09:30:39.902449Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:30:39.903446Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:31:03.872654Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:31:03.873820Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:32:33.281396Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4416643 parallel=true cells_before_filter=1382 cells_after_filter=1382 truncated=false bounds=51.1305,-0.9325,51.9441,1.3087 filters=2 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:1.6" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=28.9 json_ms=0.6 total_ms=29.5 -2026-04-04T09:32:33.525363Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=4416643 filters=2 travel=0 total=3082979 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:1.6" ms=46.2 -2026-04-04T09:32:35.530435Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:32:35.530456Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:32:35.829427Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4416643 parallel=true cells_before_filter=1382 cells_after_filter=1382 truncated=false bounds=51.1305,-0.9325,51.9441,1.3087 filters=2 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:1.6" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=16.1 json_ms=0.6 total_ms=16.8 -2026-04-04T09:32:36.116576Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=4416643 filters=2 travel=0 total=3082979 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:1.6" ms=43.4 -2026-04-04T09:32:37.768386Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=1600508 parallel=true cells_before_filter=7367 cells_after_filter=7134 truncated=false bounds=51.3931,-0.3637,51.5817,0.1553 filters=2 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:1.6" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=13.0 json_ms=3.4 total_ms=16.5 -2026-04-04T09:32:37.834267Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1600508 filters=2 travel=0 total=1411422 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:1.6" ms=16.1 -2026-04-04T09:32:38.412094Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:32:38.412113Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:32:38.683682Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=1600508 parallel=true cells_before_filter=7367 cells_after_filter=7182 truncated=false bounds=51.3924,-0.3656,51.5824,0.1572 filters=2 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:1.6" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=12.5 json_ms=3.4 total_ms=15.9 -2026-04-04T09:32:38.923058Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1600508 filters=2 travel=0 total=1411422 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:1.6" ms=15.5 -2026-04-04T09:32:41.453584Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=1600508 parallel=true cells_before_filter=7531 cells_after_filter=7336 truncated=false bounds=51.3924,-0.3656,51.5824,0.1572 filters=1 filters_raw="Listing status:Historical sale" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=12.3 json_ms=5.7 total_ms=18.0 -2026-04-04T09:32:41.609812Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=1600508 parallel=true cells_before_filter=7367 cells_after_filter=7182 truncated=false bounds=51.3924,-0.3656,51.5824,0.1572 filters=2 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:1.6" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=12.9 json_ms=5.9 total_ms=18.8 -2026-04-04T09:32:41.802455Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=1600508 parallel=true cells_before_filter=7117 cells_after_filter=6949 truncated=false bounds=51.3924,-0.3656,51.5824,0.1572 filters=2 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:1.3" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=12.9 json_ms=3.2 total_ms=16.2 -2026-04-04T09:32:42.055074Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1600508 filters=2 travel=0 total=1370212 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:1.3" ms=15.4 -2026-04-04T09:32:43.065473Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=1600508 parallel=true cells_before_filter=7531 cells_after_filter=7336 truncated=false bounds=51.3924,-0.3656,51.5824,0.1572 filters=1 filters_raw="Listing status:Historical sale" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=13.2 json_ms=5.8 total_ms=19.0 -2026-04-04T09:32:43.220274Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=1600508 parallel=true cells_before_filter=7117 cells_after_filter=6949 truncated=false bounds=51.3924,-0.3656,51.5824,0.1572 filters=2 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:1.3" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=13.3 json_ms=5.5 total_ms=18.8 -2026-04-04T09:32:44.046613Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=1600508 parallel=true cells_before_filter=7529 cells_after_filter=7334 truncated=false bounds=51.3924,-0.3656,51.5824,0.1572 filters=2 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:3.1" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=12.7 json_ms=3.5 total_ms=16.2 -2026-04-04T09:32:44.288162Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1600508 filters=2 travel=0 total=1427822 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:3.1" ms=16.5 -2026-04-04T09:32:45.000361Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=1600508 parallel=true cells_before_filter=7531 cells_after_filter=7336 truncated=false bounds=51.3924,-0.3656,51.5824,0.1572 filters=1 filters_raw="Listing status:Historical sale" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=12.2 json_ms=5.6 total_ms=17.9 -2026-04-04T09:32:45.172950Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=1600508 parallel=true cells_before_filter=7529 cells_after_filter=7334 truncated=false bounds=51.3924,-0.3656,51.5824,0.1572 filters=2 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:3.1" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=12.1 json_ms=5.9 total_ms=18.0 -2026-04-04T09:32:45.354310Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=1600508 parallel=true cells_before_filter=7531 cells_after_filter=7336 truncated=false bounds=51.3924,-0.3656,51.5824,0.1572 filters=2 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:5.300000000000001" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=12.7 json_ms=3.8 total_ms=16.6 -2026-04-04T09:32:45.602818Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1600508 filters=2 travel=0 total=1428012 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:5.300000000000001" ms=15.1 -2026-04-04T09:32:46.915239Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=2836325 parallel=true cells_before_filter=4274 cells_after_filter=4269 truncated=false bounds=51.3025,-0.5450,51.6962,0.5386 filters=2 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:5.300000000000001" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=14.9 json_ms=1.9 total_ms=16.9 -2026-04-04T09:32:47.173216Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=2836325 filters=2 travel=0 total=2563348 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:5.300000000000001" ms=26.4 -2026-04-04T09:32:48.521063Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=2698717 parallel=true cells_before_filter=3754 cells_after_filter=3754 truncated=false bounds=51.3156,-0.5190,51.6798,0.4834 filters=2 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:5.300000000000001" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=13.7 json_ms=1.7 total_ms=15.4 -2026-04-04T09:32:48.771019Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=2698717 filters=2 travel=0 total=2441022 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:5.300000000000001" ms=26.0 -2026-04-04T09:32:49.506790Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3272625 parallel=true cells_before_filter=6094 cells_after_filter=6094 truncated=false bounds=51.2429,-0.6307,51.7359,0.7257 filters=2 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:5.300000000000001" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=16.6 json_ms=2.8 total_ms=19.4 -2026-04-04T09:32:49.830231Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3272625 filters=2 travel=0 total=2948993 filters_raw="Listing status:Historical sale;;Distance to nearest train or tube station (km):0.0017206129:5.300000000000001" ms=31.3 -2026-04-04T09:32:51.648609Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3272625 parallel=true cells_before_filter=6441 cells_after_filter=6441 truncated=false bounds=51.2429,-0.6307,51.7359,0.7257 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=15.5 json_ms=2.8 total_ms=18.4 -2026-04-04T09:32:51.986417Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3272625 filters=1 travel=0 total=2972588 filters_raw="Listing status:Historical sale" ms=93.5 -2026-04-04T09:33:28.076047Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T09:33:28.076197Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-04-04T09:33:28.076205Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-04-04T09:33:28.167559Z INFO property_map_server::data::property: Postcode features loaded rows=1262364 -2026-04-04T09:33:28.167570Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-04-04T09:33:30.508853Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203393 -2026-04-04T09:33:30.508864Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-04-04T09:33:30.913461Z INFO property_map_server::data::property: buy listings joined rows=1060501 -2026-04-04T09:33:30.913480Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-04-04T09:33:31.030377Z INFO property_map_server::data::property: rent listings joined rows=266585 -2026-04-04T09:33:31.030388Z INFO property_map_server::data::property: Concatenating all data sources -2026-04-04T09:33:36.649002Z INFO property_map_server::data::property: All data sources combined properties=15203393 buy_listings=1060501 rent_listings=266585 total=16530479 -2026-04-04T09:33:36.649097Z INFO property_map_server::data::property: Feature columns from config numeric=58 enums=7 total=65 -2026-04-04T09:33:37.802316Z INFO property_map_server::data::property: Combined data selected rows=16530479 -2026-04-04T09:33:37.968239Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-04-04T09:33:38.345282Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-04-04T09:33:39.487522Z INFO property_map_server::data::property: Extracting string columns -2026-04-04T09:33:42.019742Z INFO property_map_server::data::property: Building enum features -2026-04-04T09:33:43.372553Z INFO property_map_server::data::property: Extracting renovation history -2026-04-04T09:33:45.406932Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829784 -2026-04-04T09:33:45.406943Z INFO property_map_server::data::property: Extracting listing features -2026-04-04T09:33:46.080742Z INFO property_map_server::data::property: Listing features extracted properties_with_features=527541 -2026-04-04T09:33:46.080750Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-04-04T09:33:46.965875Z INFO property_map_server::data::property: Building interned strings -2026-04-04T09:33:53.280241Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-04-04T09:33:55.743136Z INFO property_map_server::data::property: Data loading complete -2026-04-04T09:33:56.820762Z INFO property_map_server: Property data loaded rows=16530479 features=65 enums=7 -2026-04-04T09:33:56.820771Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-04-04T09:33:57.244448Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-04-04T09:33:57.244459Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-04-04T09:33:57.649679Z INFO property_map_server::data::property: H3 precomputation complete (16530479 cells) -2026-04-04T09:33:57.649721Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-04-04T09:33:57.649729Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-04-04T09:33:57.670413Z INFO property_map_server::data::poi: Loaded 550611 POIs -2026-04-04T09:33:57.758232Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-04-04T09:33:57.758681Z INFO property_map_server::data::poi: POI data loading complete. -2026-04-04T09:33:57.791071Z INFO property_map_server: POI data loaded pois=550611 -2026-04-04T09:33:57.791080Z INFO property_map_server: Building POI spatial grid index -2026-04-04T09:33:57.795491Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-04-04T09:33:57.795496Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-04-04T09:33:57.802226Z INFO property_map_server::data::places: Loaded 3474 places -2026-04-04T09:33:57.802939Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-04-04T09:33:57.803001Z INFO property_map_server: Place data loaded places=3474 -2026-04-04T09:33:57.803009Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-04-04T09:33:57.803012Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-04-04T09:33:57.812473Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-04-04T09:34:37.054421Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T09:34:37.054637Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-04-04T09:34:37.054657Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-04-04T09:34:37.112188Z INFO property_map_server::data::property: Postcode features loaded rows=1262364 -2026-04-04T09:34:37.112198Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-04-04T09:34:45.751330Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T09:34:45.751484Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-04-04T09:34:45.751491Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-04-04T09:34:45.807033Z INFO property_map_server::data::property: Postcode features loaded rows=1262364 -2026-04-04T09:34:45.807042Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-04-04T09:34:47.919170Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203393 -2026-04-04T09:34:47.919180Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-04-04T09:34:48.270494Z INFO property_map_server::data::property: buy listings joined rows=1060501 -2026-04-04T09:34:48.270513Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-04-04T09:34:48.374961Z INFO property_map_server::data::property: rent listings joined rows=266585 -2026-04-04T09:34:48.374970Z INFO property_map_server::data::property: Concatenating all data sources -2026-04-04T09:34:52.368930Z INFO property_map_server::data::property: All data sources combined properties=15203393 buy_listings=1060501 rent_listings=266585 total=16530479 -2026-04-04T09:34:52.368999Z INFO property_map_server::data::property: Feature columns from config numeric=58 enums=7 total=65 -2026-04-04T09:34:53.643464Z INFO property_map_server::data::property: Combined data selected rows=16530479 -2026-04-04T09:34:53.804068Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-04-04T09:34:54.211869Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-04-04T09:34:55.489765Z INFO property_map_server::data::property: Extracting string columns -2026-04-04T09:34:57.733502Z INFO property_map_server::data::property: Building enum features -2026-04-04T09:35:05.727722Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T09:35:05.727913Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-04-04T09:35:05.727926Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-04-04T09:35:05.786709Z INFO property_map_server::data::property: Postcode features loaded rows=1262364 -2026-04-04T09:35:05.786718Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-04-04T09:35:08.025257Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203393 -2026-04-04T09:35:08.025268Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-04-04T09:35:08.396676Z INFO property_map_server::data::property: buy listings joined rows=1060501 -2026-04-04T09:35:08.396694Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-04-04T09:35:08.504367Z INFO property_map_server::data::property: rent listings joined rows=266585 -2026-04-04T09:35:08.504377Z INFO property_map_server::data::property: Concatenating all data sources -2026-04-04T09:35:10.708697Z INFO property_map_server::data::property: All data sources combined properties=15203393 buy_listings=1060501 rent_listings=266585 total=16530479 -2026-04-04T09:35:10.708778Z INFO property_map_server::data::property: Feature columns from config numeric=58 enums=7 total=65 -2026-04-04T09:35:11.928376Z INFO property_map_server::data::property: Combined data selected rows=16530479 -2026-04-04T09:35:12.112507Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-04-04T09:35:12.539597Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-04-04T09:35:13.717388Z INFO property_map_server::data::property: Extracting string columns -2026-04-04T09:35:16.038975Z INFO property_map_server::data::property: Building enum features -2026-04-04T09:35:17.393465Z INFO property_map_server::data::property: Extracting renovation history -2026-04-04T09:35:23.650832Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T09:35:23.650999Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-04-04T09:35:23.651008Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-04-04T09:35:23.708191Z INFO property_map_server::data::property: Postcode features loaded rows=1262364 -2026-04-04T09:35:23.708203Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-04-04T09:35:25.961705Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203393 -2026-04-04T09:35:25.961715Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-04-04T09:35:26.315187Z INFO property_map_server::data::property: buy listings joined rows=1060501 -2026-04-04T09:35:26.315213Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-04-04T09:35:26.429728Z INFO property_map_server::data::property: rent listings joined rows=266585 -2026-04-04T09:35:26.429739Z INFO property_map_server::data::property: Concatenating all data sources -2026-04-04T09:35:28.639127Z INFO property_map_server::data::property: All data sources combined properties=15203393 buy_listings=1060501 rent_listings=266585 total=16530479 -2026-04-04T09:35:28.639203Z INFO property_map_server::data::property: Feature columns from config numeric=58 enums=7 total=65 -2026-04-04T09:35:29.877107Z INFO property_map_server::data::property: Combined data selected rows=16530479 -2026-04-04T09:35:30.054805Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-04-04T09:35:30.483812Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-04-04T09:35:31.662133Z INFO property_map_server::data::property: Extracting string columns -2026-04-04T09:35:33.886579Z INFO property_map_server::data::property: Building enum features -2026-04-04T09:35:35.250064Z INFO property_map_server::data::property: Extracting renovation history -2026-04-04T09:35:39.879901Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T09:35:39.880057Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-04-04T09:35:39.880065Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-04-04T09:35:39.938249Z INFO property_map_server::data::property: Postcode features loaded rows=1262364 -2026-04-04T09:35:39.938259Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-04-04T09:35:42.126026Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203393 -2026-04-04T09:35:42.126037Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-04-04T09:35:42.501607Z INFO property_map_server::data::property: buy listings joined rows=1060501 -2026-04-04T09:35:42.501626Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-04-04T09:35:42.602902Z INFO property_map_server::data::property: rent listings joined rows=266585 -2026-04-04T09:35:42.602914Z INFO property_map_server::data::property: Concatenating all data sources -2026-04-04T09:35:44.954760Z INFO property_map_server::data::property: All data sources combined properties=15203393 buy_listings=1060501 rent_listings=266585 total=16530479 -2026-04-04T09:35:44.954863Z INFO property_map_server::data::property: Feature columns from config numeric=58 enums=7 total=65 -2026-04-04T09:35:46.128858Z INFO property_map_server::data::property: Combined data selected rows=16530479 -2026-04-04T09:35:46.312380Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-04-04T09:35:46.754919Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-04-04T09:35:47.921519Z INFO property_map_server::data::property: Extracting string columns -2026-04-04T09:35:50.259285Z INFO property_map_server::data::property: Building enum features -2026-04-04T09:35:51.631288Z INFO property_map_server::data::property: Extracting renovation history -2026-04-04T09:35:53.754130Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829784 -2026-04-04T09:35:53.754139Z INFO property_map_server::data::property: Extracting listing features -2026-04-04T09:35:54.412095Z INFO property_map_server::data::property: Listing features extracted properties_with_features=527541 -2026-04-04T09:35:54.412104Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-04-04T09:35:55.248750Z INFO property_map_server::data::property: Building interned strings -2026-04-04T09:36:01.492024Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-04-04T09:36:04.022839Z INFO property_map_server::data::property: Data loading complete -2026-04-04T09:36:05.081113Z INFO property_map_server: Property data loaded rows=16530479 features=65 enums=7 -2026-04-04T09:36:05.081122Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-04-04T09:36:05.502537Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-04-04T09:36:05.502553Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-04-04T09:36:05.908122Z INFO property_map_server::data::property: H3 precomputation complete (16530479 cells) -2026-04-04T09:36:05.908147Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-04-04T09:36:05.908152Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-04-04T09:36:05.935944Z INFO property_map_server::data::poi: Loaded 550611 POIs -2026-04-04T09:36:06.024473Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-04-04T09:36:06.025054Z INFO property_map_server::data::poi: POI data loading complete. -2026-04-04T09:36:06.053946Z INFO property_map_server: POI data loaded pois=550611 -2026-04-04T09:36:06.053956Z INFO property_map_server: Building POI spatial grid index -2026-04-04T09:36:06.058516Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-04-04T09:36:06.058523Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-04-04T09:36:06.060428Z INFO property_map_server::data::places: Loaded 3474 places -2026-04-04T09:36:06.061164Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-04-04T09:36:06.061214Z INFO property_map_server: Place data loaded places=3474 -2026-04-04T09:36:06.061222Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-04-04T09:36:06.061226Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-04-04T09:36:06.061982Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-04-04T09:36:12.939557Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-04-04T09:36:13.164618Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-04-04T09:36:13.299287Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-04-04T09:36:13.299351Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-04-04T09:36:13.299563Z INFO property_map_server: PMTiles loaded successfully -2026-04-04T09:36:13.333753Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-04-04T09:36:13.385493Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-04-04T09:36:13.385543Z INFO property_map_server: Precomputed features response groups=7 -2026-04-04T09:36:13.385555Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-04-04T09:36:13.459165Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-04-04T09:36:13.467107Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-04-04T09:36:13.470789Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-04-04T09:36:13.517400Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-04-04T09:36:13.521396Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-04-04T09:36:13.521436Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-04-04T09:36:13.521453Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-04-04T09:36:13.523210Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2753 -2026-04-04T09:36:13.524868Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=2753 -2026-04-04T09:36:13.526325Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=2753 -2026-04-04T09:36:13.527464Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=2752 -2026-04-04T09:36:13.527485Z INFO property_map_server: Travel time store loaded modes=4 -2026-04-04T09:36:13.527526Z INFO property_map_server: Precomputed AI filters system prompt -2026-04-04T09:36:26.321388Z INFO property_map_server: All memory pages locked (mlockall) -2026-04-04T09:36:26.321433Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-04-04T09:36:26.891326Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:36:26.892565Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:36:51.111962Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:36:51.114204Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:36:51.362159Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:36:51.363308Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:36:51.765674Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3349136 parallel=true cells_before_filter=6777 cells_after_filter=6762 truncated=false bounds=51.2387,-0.6423,51.7401,0.7373 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=23.9 json_ms=3.1 total_ms=27.0 -2026-04-04T09:36:52.075284Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3349136 filters=1 travel=0 total=3042652 filters_raw="Listing status:Historical sale" ms=98.7 -2026-04-04T09:38:42.995572Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194adb4dfffff resolution=8 total_count=969 filters=1 filters_raw="Listing status:Historical sale" ms=0.6 -2026-04-04T09:38:43.184010Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=5762 cells_after_filter=5751 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=18.3 json_ms=2.7 total_ms=21.1 -2026-04-04T09:38:43.530194Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3104843 filters=1 travel=0 total=2818666 filters_raw="Listing status:Historical sale" ms=91.3 -2026-04-04T09:38:47.289883Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194adb4dfffff resolution=8 total_count=969 filters=2 filters_raw="Listing status:Historical sale;;Last known price:50000:inf" ms=0.5 -2026-04-04T09:38:47.451123Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=5762 cells_after_filter=5751 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=2 filters_raw="Listing status:Historical sale;;Last known price:50000:inf" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=17.1 json_ms=2.6 total_ms=19.7 -2026-04-04T09:38:47.711731Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3104843 filters=2 travel=0 total=2818666 filters_raw="Listing status:Historical sale;;Last known price:50000:inf" ms=31.0 -2026-04-04T09:38:49.111013Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=5762 cells_after_filter=5751 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=1 filters_raw="Listing status:Historical sale" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=16.7 json_ms=4.1 total_ms=20.8 -2026-04-04T09:38:49.280727Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=5762 cells_after_filter=5751 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=2 filters_raw="Listing status:Historical sale;;Last known price:50000:inf" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=16.1 json_ms=3.7 total_ms=19.9 -2026-04-04T09:38:49.739926Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194adb4dfffff resolution=8 total_count=24 filters=2 filters_raw="Listing status:Historical sale;;Last known price:1070000:inf" ms=0.2 -2026-04-04T09:38:49.913762Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=3429 cells_after_filter=3427 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=2 filters_raw="Listing status:Historical sale;;Last known price:1070000:inf" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=9.8 json_ms=1.5 total_ms=11.4 -2026-04-04T09:38:50.176023Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3104843 filters=2 travel=0 total=161439 filters_raw="Listing status:Historical sale;;Last known price:1070000:inf" ms=29.8 -2026-04-04T09:38:50.832627Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=5762 cells_after_filter=5751 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=1 filters_raw="Listing status:Historical sale" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=16.7 json_ms=4.9 total_ms=21.7 -2026-04-04T09:38:50.982407Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=3429 cells_after_filter=3427 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=2 filters_raw="Listing status:Historical sale;;Last known price:1070000:inf" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=10.8 json_ms=2.3 total_ms=13.0 -2026-04-04T09:38:51.107231Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194adb4dfffff resolution=8 total_count=4 filters=2 filters_raw="Listing status:Historical sale;;Last known price:1390000:inf" ms=0.1 -2026-04-04T09:38:51.241111Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=2532 cells_after_filter=2531 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=2 filters_raw="Listing status:Historical sale;;Last known price:1390000:inf" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=9.6 json_ms=1.1 total_ms=10.8 -2026-04-04T09:38:51.498959Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3104843 filters=2 travel=0 total=94045 filters_raw="Listing status:Historical sale;;Last known price:1390000:inf" ms=29.0 -2026-04-04T09:38:51.775881Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=5762 cells_after_filter=5751 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=1 filters_raw="Listing status:Historical sale" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=15.2 json_ms=4.0 total_ms=19.2 -2026-04-04T09:38:51.906003Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=2532 cells_after_filter=2531 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=2 filters_raw="Listing status:Historical sale;;Last known price:1390000:inf" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=9.4 json_ms=1.7 total_ms=11.2 -2026-04-04T09:38:51.960913Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194adb4dfffff resolution=8 total_count=3 filters=2 filters_raw="Listing status:Historical sale;;Last known price:1650000:inf" ms=0.2 -2026-04-04T09:38:52.137355Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=1986 cells_after_filter=1986 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=2 filters_raw="Listing status:Historical sale;;Last known price:1650000:inf" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=9.4 json_ms=0.9 total_ms=10.3 -2026-04-04T09:38:52.382178Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3104843 filters=2 travel=0 total=65641 filters_raw="Listing status:Historical sale;;Last known price:1650000:inf" ms=30.6 -2026-04-04T09:38:53.008909Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=5762 cells_after_filter=5751 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=1 filters_raw="Listing status:Historical sale" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=15.4 json_ms=4.3 total_ms=19.7 -2026-04-04T09:38:53.180967Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=1986 cells_after_filter=1986 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=2 filters_raw="Listing status:Historical sale;;Last known price:1650000:inf" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=8.3 json_ms=1.2 total_ms=9.6 -2026-04-04T09:38:53.279134Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194adb4dfffff resolution=8 total_count=17 filters=2 filters_raw="Listing status:Historical sale;;Last known price:1200000:inf" ms=0.2 -2026-04-04T09:38:53.443663Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=3099 cells_after_filter=3097 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=2 filters_raw="Listing status:Historical sale;;Last known price:1200000:inf" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=10.1 json_ms=1.3 total_ms=11.4 -2026-04-04T09:38:53.708661Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3104843 filters=2 travel=0 total=131277 filters_raw="Listing status:Historical sale;;Last known price:1200000:inf" ms=28.8 -2026-04-04T09:38:53.843286Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=5762 cells_after_filter=5751 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=1 filters_raw="Listing status:Historical sale" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=16.3 json_ms=4.2 total_ms=20.5 -2026-04-04T09:38:53.991436Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=3099 cells_after_filter=3097 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=2 filters_raw="Listing status:Historical sale;;Last known price:1200000:inf" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=10.0 json_ms=2.0 total_ms=12.0 -2026-04-04T09:38:54.052964Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194adb4dfffff resolution=8 total_count=63 filters=2 filters_raw="Listing status:Historical sale;;Last known price:920000:inf" ms=0.2 -2026-04-04T09:38:54.236037Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=3939 cells_after_filter=3937 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=2 filters_raw="Listing status:Historical sale;;Last known price:920000:inf" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=11.0 json_ms=1.8 total_ms=12.8 -2026-04-04T09:38:54.483840Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3104843 filters=2 travel=0 total=215645 filters_raw="Listing status:Historical sale;;Last known price:920000:inf" ms=29.6 -2026-04-04T09:38:54.602700Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=5762 cells_after_filter=5751 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=1 filters_raw="Listing status:Historical sale" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=15.0 json_ms=3.9 total_ms=18.9 -2026-04-04T09:38:54.742059Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=3939 cells_after_filter=3937 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=2 filters_raw="Listing status:Historical sale;;Last known price:920000:inf" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=10.3 json_ms=2.5 total_ms=12.9 -2026-04-04T09:38:54.974636Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194adb4dfffff resolution=8 total_count=265 filters=2 filters_raw="Listing status:Historical sale;;Last known price:500000:inf" ms=0.2 -2026-04-04T09:38:55.140085Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=5446 cells_after_filter=5439 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=2 filters_raw="Listing status:Historical sale;;Last known price:500000:inf" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=13.6 json_ms=2.4 total_ms=16.0 -2026-04-04T09:38:55.401827Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3104843 filters=2 travel=0 total=747405 filters_raw="Listing status:Historical sale;;Last known price:500000:inf" ms=33.2 -2026-04-04T09:39:12.394962Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194adb4dfffff resolution=8 total_count=265 filters=3 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.3 -2026-04-04T09:39:12.565873Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=5446 cells_after_filter=5439 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=3 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=16.9 json_ms=2.4 total_ms=19.4 -2026-04-04T09:39:12.833192Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3104843 filters=3 travel=0 total=747405 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=47.3 -2026-04-04T09:39:14.713978Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194adb4dfffff resolution=8 total_count=235 filters=4 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744" ms=0.2 -2026-04-04T09:39:14.885527Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=5388 cells_after_filter=5381 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=4 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=13.1 json_ms=2.3 total_ms=15.5 -2026-04-04T09:39:15.162903Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3104843 filters=4 travel=0 total=683785 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744" ms=47.3 -2026-04-04T09:39:15.378577Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194adb4dfffff resolution=8 total_count=203 filters=5 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750" ms=0.2 -2026-04-04T09:39:15.539135Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=5305 cells_after_filter=5298 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=5 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=13.4 json_ms=2.3 total_ms=15.8 -2026-04-04T09:39:15.840770Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3104843 filters=5 travel=0 total=566384 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750" ms=49.0 -2026-04-04T09:39:16.247382Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194adb4dfffff resolution=8 total_count=192 filters=5 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750" ms=0.2 -2026-04-04T09:39:16.414585Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3104843 parallel=true cells_before_filter=4780 cells_after_filter=4776 truncated=false bounds=51.2387,-0.5206,51.7401,0.6156 filters=5 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=12.8 json_ms=2.1 total_ms=14.9 -2026-04-04T09:39:16.721763Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3104843 filters=5 travel=0 total=459500 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750" ms=49.9 -2026-04-04T09:39:38.356994Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:39:38.359570Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:40:01.249033Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.4 -2026-04-04T09:40:01.700722Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3104843 filters=5 travel=0 total=459500 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750" ms=51.2 -2026-04-04T09:40:04.415006Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3099349 parallel=true cells_before_filter=3833 cells_after_filter=3832 truncated=false bounds=51.2619,-0.6575,51.7630,0.4787 filters=5 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=15.4 json_ms=2.4 total_ms=17.9 -2026-04-04T09:40:04.758545Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3099349 filters=6 travel=1 total=461535 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750" ms=112.0 -2026-04-04T09:40:05.327970Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3099349 parallel=true cells_before_filter=3833 cells_after_filter=3832 truncated=false bounds=51.2619,-0.6575,51.7630,0.4787 filters=5 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=15.1 json_ms=2.4 total_ms=17.5 -2026-04-04T09:40:05.481789Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3099349 parallel=true cells_before_filter=3833 cells_after_filter=3832 truncated=false bounds=51.2619,-0.6575,51.7630,0.4787 filters=5 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=15.0 json_ms=2.8 total_ms=17.8 -2026-04-04T09:40:05.665545Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3099349 parallel=true cells_before_filter=1675 cells_after_filter=1675 truncated=false bounds=51.2619,-0.6575,51.7630,0.4787 filters=5 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=12.7 json_ms=1.5 total_ms=14.3 -2026-04-04T09:40:06.005010Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3099349 filters=6 travel=1 total=353301 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750" ms=111.8 -2026-04-04T09:40:06.931172Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3099349 parallel=true cells_before_filter=3833 cells_after_filter=3832 truncated=false bounds=51.2619,-0.6575,51.7630,0.4787 filters=5 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=14.5 json_ms=2.3 total_ms=16.8 -2026-04-04T09:40:07.096101Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3099349 parallel=true cells_before_filter=1675 cells_after_filter=1675 truncated=false bounds=51.2619,-0.6575,51.7630,0.4787 filters=5 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=12.3 json_ms=1.0 total_ms=13.3 -2026-04-04T09:40:07.306162Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3099349 parallel=true cells_before_filter=1455 cells_after_filter=1455 truncated=false bounds=51.2619,-0.6575,51.7630,0.4787 filters=5 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=10.9 json_ms=0.9 total_ms=11.8 -2026-04-04T09:40:07.647130Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3099349 filters=6 travel=1 total=199600 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750" ms=110.7 -2026-04-04T09:40:33.342454Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.4 -2026-04-04T09:40:45.290970Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194adb4dfffff resolution=8 total_count=192 filters=6 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" ms=0.2 -2026-04-04T09:40:45.292103Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.3 -2026-04-04T09:40:45.437129Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3099349 parallel=true cells_before_filter=1455 cells_after_filter=1455 truncated=false bounds=51.2619,-0.6575,51.7630,0.4787 filters=6 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=11.3 json_ms=0.9 total_ms=12.2 -2026-04-04T09:40:45.794892Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3099349 filters=7 travel=1 total=199600 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" ms=113.2 -2026-04-04T09:40:50.160634Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.2 -2026-04-04T09:40:53.059037Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.2 -2026-04-04T09:40:54.127947Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.3 -2026-04-04T09:43:43.775140Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:43:43.776685Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:43:43.837914Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.4 -2026-04-04T09:43:43.846627Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:43:43.847665Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:43:43.974313Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.3 -2026-04-04T09:44:04.558780Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:44:04.567512Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:44:04.635515Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.3 -2026-04-04T09:44:04.673426Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:44:04.673428Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:44:04.723503Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.4 -2026-04-04T09:44:06.051705Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:44:06.055278Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:44:06.099983Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.3 -2026-04-04T09:44:06.117044Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:44:06.117093Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:44:06.204860Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.4 -2026-04-04T09:44:07.831434Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:44:07.831436Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:44:08.048428Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.6 -2026-04-04T09:44:08.052709Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:44:08.055009Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:44:08.112231Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.3 -2026-04-04T09:44:09.247098Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:44:09.247397Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:44:09.381965Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.4 -2026-04-04T09:44:09.385236Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:44:09.385294Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:44:09.471533Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.2 -2026-04-04T09:44:57.873840Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.3 -2026-04-04T09:44:57.885073Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:44:57.886036Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:44:57.932679Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.2 -2026-04-04T09:45:00.694289Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3403304 parallel=true cells_before_filter=1455 cells_after_filter=1455 truncated=false bounds=51.2619,-0.7792,51.7630,0.6004 filters=6 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=13.4 json_ms=1.3 total_ms=14.7 -2026-04-04T09:45:01.053501Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3403304 filters=7 travel=1 total=199600 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" ms=125.1 -2026-04-04T09:45:21.013582Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3403304 filters=7 travel=1 total=310116 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" ms=119.3 -2026-04-04T09:45:22.289298Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=310268 parallel=true cells_before_filter=84 cells_after_filter=61 truncated=false bounds=51.4896,-0.2000,51.5404,-0.0600 filters=6 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=1.5 json_ms=0.1 total_ms=1.6 -2026-04-04T09:45:22.602222Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=310268 filters=7 travel=1 total=7652 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" ms=11.9 -2026-04-04T09:45:23.648923Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=310268 parallel=true cells_before_filter=825 cells_after_filter=679 truncated=false bounds=51.4896,-0.2000,51.5404,-0.0600 filters=6 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=2.6 json_ms=0.5 total_ms=3.1 -2026-04-04T09:45:23.796861Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=310268 parallel=true cells_before_filter=84 cells_after_filter=61 truncated=false bounds=51.4896,-0.2000,51.5404,-0.0600 filters=6 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=1.5 json_ms=0.1 total_ms=1.6 -2026-04-04T09:45:24.005856Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=310268 parallel=true cells_before_filter=84 cells_after_filter=61 truncated=false bounds=51.4896,-0.2000,51.5404,-0.0600 filters=6 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=1.6 json_ms=0.1 total_ms=1.6 -2026-04-04T09:45:24.259736Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=310268 filters=7 travel=1 total=7652 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" ms=12.5 -2026-04-04T09:45:25.431775Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=310268 parallel=true cells_before_filter=825 cells_after_filter=679 truncated=false bounds=51.4896,-0.2000,51.5404,-0.0600 filters=6 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=2.7 json_ms=0.5 total_ms=3.2 -2026-04-04T09:45:25.579030Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=310268 parallel=true cells_before_filter=84 cells_after_filter=61 truncated=false bounds=51.4896,-0.2000,51.5404,-0.0600 filters=6 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=1.3 json_ms=0.1 total_ms=1.4 -2026-04-04T09:45:25.890095Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=310268 parallel=true cells_before_filter=604 cells_after_filter=474 truncated=false bounds=51.4896,-0.2000,51.5404,-0.0600 filters=6 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=2.2 json_ms=0.3 total_ms=2.5 -2026-04-04T09:45:26.132252Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=310268 filters=7 travel=1 total=71322 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" ms=12.1 -2026-04-04T09:45:26.194904Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=310268 parallel=true cells_before_filter=825 cells_after_filter=679 truncated=false bounds=51.4896,-0.2000,51.5404,-0.0600 filters=6 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=2.6 json_ms=0.5 total_ms=3.1 -2026-04-04T09:45:26.357902Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=310268 parallel=true cells_before_filter=604 cells_after_filter=474 truncated=false bounds=51.4896,-0.2000,51.5404,-0.0600 filters=6 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=3.3 json_ms=0.3 total_ms=3.6 -2026-04-04T09:45:26.557308Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=310268 parallel=true cells_before_filter=796 cells_after_filter=651 truncated=false bounds=51.4896,-0.2000,51.5404,-0.0600 filters=6 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=2.6 json_ms=0.4 total_ms=3.0 -2026-04-04T09:45:26.798396Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=310268 filters=7 travel=1 total=87928 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" ms=12.0 -2026-04-04T09:45:29.312464Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=310268 parallel=true cells_before_filter=825 cells_after_filter=679 truncated=false bounds=51.4896,-0.2000,51.5404,-0.0600 filters=6 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.1 json_ms=0.4 total_ms=2.5 -2026-04-04T09:45:29.576178Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=310268 filters=6 travel=0 total=90065 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" ms=5.6 -2026-04-04T09:46:14.028136Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=24630 parallel=false cells_before_filter=101 cells_after_filter=57 truncated=false bounds=51.5095,-0.1429,51.5205,-0.1171 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.0 total_ms=1.1 -2026-04-04T09:46:14.277640Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=24630 filters=1 travel=0 total=18876 filters_raw="Listing status:Historical sale" ms=0.8 -2026-04-04T09:46:16.369236Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=17864 parallel=false cells_before_filter=81 cells_after_filter=55 truncated=false bounds=51.5095,-0.1399,51.5204,-0.1140 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.0 total_ms=1.1 -2026-04-04T09:46:17.046556Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=52 cells_after_filter=43 truncated=false bounds=51.5081,-0.1424,51.5191,-0.1165 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.5 json_ms=0.0 total_ms=0.5 -2026-04-04T09:46:17.300914Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10805 filters=1 travel=0 total=8405 filters_raw="Listing status:Historical sale" ms=0.4 -2026-04-04T09:48:39.871222Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=52 cells_after_filter=43 truncated=false bounds=51.5081,-0.1424,51.5191,-0.1165 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.5 json_ms=0.0 total_ms=0.6 -2026-04-04T09:48:40.125658Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10805 filters=1 travel=0 total=8405 filters_raw="Listing status:Historical sale" ms=0.4 -2026-04-04T09:48:40.877147Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=310268 parallel=true cells_before_filter=825 cells_after_filter=679 truncated=false bounds=51.4896,-0.2000,51.5404,-0.0600 filters=6 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.7 json_ms=0.4 total_ms=3.1 -2026-04-04T09:48:40.879704Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=310268 filters=6 travel=0 total=90065 filters_raw="Listing status:Historical sale;;Last known price:500000:inf;;Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" ms=5.8 -2026-04-04T09:50:23.090149Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=52 cells_after_filter=43 truncated=false bounds=51.5081,-0.1424,51.5191,-0.1166 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.5 json_ms=0.0 total_ms=0.5 -2026-04-04T09:50:23.344308Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10805 filters=1 travel=0 total=8405 filters_raw="Listing status:Historical sale" ms=0.4 -2026-04-04T09:50:25.604663Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=17864 parallel=false cells_before_filter=81 cells_after_filter=69 truncated=false bounds=51.5043,-0.1424,51.5229,-0.1166 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.1 total_ms=1.2 -2026-04-04T09:50:26.722951Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=21373 parallel=false cells_before_filter=80 cells_after_filter=62 truncated=false bounds=51.4995,-0.1421,51.5182,-0.1163 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.0 total_ms=1.0 -2026-04-04T09:50:26.973810Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=21373 filters=1 travel=0 total=16983 filters_raw="Listing status:Historical sale" ms=0.7 -2026-04-04T09:50:27.960736Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=52 cells_after_filter=49 truncated=false bounds=51.5021,-0.1421,51.5156,-0.1163 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.5 json_ms=0.0 total_ms=0.5 -2026-04-04T09:50:28.209407Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10805 filters=1 travel=0 total=8405 filters_raw="Listing status:Historical sale" ms=0.4 -2026-04-04T09:51:22.891022Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T09:51:22.891197Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-04-04T09:51:22.891207Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-04-04T09:51:23.017879Z INFO property_map_server::data::property: Postcode features loaded rows=1262364 -2026-04-04T09:51:23.017889Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-04-04T09:51:25.325821Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203393 -2026-04-04T09:51:25.325831Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-04-04T09:51:25.713903Z INFO property_map_server::data::property: buy listings joined rows=1060501 -2026-04-04T09:51:25.713923Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-04-04T09:51:25.821290Z INFO property_map_server::data::property: rent listings joined rows=266585 -2026-04-04T09:51:25.821302Z INFO property_map_server::data::property: Concatenating all data sources -2026-04-04T09:51:34.949514Z INFO property_map_server::data::property: All data sources combined properties=15203393 buy_listings=1060501 rent_listings=266585 total=16530479 -2026-04-04T09:51:34.949603Z INFO property_map_server::data::property: Feature columns from config numeric=58 enums=7 total=65 -2026-04-04T09:51:36.272343Z INFO property_map_server::data::property: Combined data selected rows=16530479 -2026-04-04T09:51:36.456092Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-04-04T09:51:36.874329Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-04-04T09:51:38.042186Z INFO property_map_server::data::property: Extracting string columns -2026-04-04T09:51:40.439359Z INFO property_map_server::data::property: Building enum features -2026-04-04T09:51:41.800807Z INFO property_map_server::data::property: Extracting renovation history -2026-04-04T09:51:43.933883Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829784 -2026-04-04T09:51:43.933893Z INFO property_map_server::data::property: Extracting listing features -2026-04-04T09:51:44.636267Z INFO property_map_server::data::property: Listing features extracted properties_with_features=527541 -2026-04-04T09:51:44.636279Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-04-04T09:51:45.698096Z INFO property_map_server::data::property: Building interned strings -2026-04-04T09:51:52.960609Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-04-04T09:51:55.690313Z INFO property_map_server::data::property: Data loading complete -2026-04-04T09:51:56.943314Z INFO property_map_server: Property data loaded rows=16530479 features=65 enums=7 -2026-04-04T09:51:56.943322Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-04-04T09:51:57.363980Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-04-04T09:51:57.363989Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-04-04T09:51:57.756811Z INFO property_map_server::data::property: H3 precomputation complete (16530479 cells) -2026-04-04T09:51:57.756843Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-04-04T09:51:57.756848Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-04-04T09:51:57.786577Z INFO property_map_server::data::poi: Loaded 550611 POIs -2026-04-04T09:51:57.874082Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-04-04T09:51:57.874542Z INFO property_map_server::data::poi: POI data loading complete. -2026-04-04T09:51:57.903229Z INFO property_map_server: POI data loaded pois=550611 -2026-04-04T09:51:57.903238Z INFO property_map_server: Building POI spatial grid index -2026-04-04T09:51:57.907863Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-04-04T09:51:57.907870Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-04-04T09:51:57.908430Z INFO property_map_server::data::places: Loaded 3474 places -2026-04-04T09:51:57.909199Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-04-04T09:51:57.909252Z INFO property_map_server: Place data loaded places=3474 -2026-04-04T09:51:57.909261Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-04-04T09:51:57.909264Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-04-04T09:51:57.910057Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-04-04T09:52:06.113462Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-04-04T09:52:06.336341Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-04-04T09:52:06.472031Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-04-04T09:52:06.472086Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-04-04T09:52:06.472443Z INFO property_map_server: PMTiles loaded successfully -2026-04-04T09:52:06.506874Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-04-04T09:52:06.536291Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-04-04T09:52:06.536344Z INFO property_map_server: Precomputed features response groups=7 -2026-04-04T09:52:06.536358Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-04-04T09:52:06.643629Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-04-04T09:52:06.658130Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-04-04T09:52:06.661422Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-04-04T09:52:06.707837Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-04-04T09:52:06.711807Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-04-04T09:52:06.711837Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-04-04T09:52:06.711856Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-04-04T09:52:06.727911Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2753 -2026-04-04T09:52:06.731050Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=2753 -2026-04-04T09:52:06.741344Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=2753 -2026-04-04T09:52:06.756414Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=2752 -2026-04-04T09:52:06.756459Z INFO property_map_server: Travel time store loaded modes=4 -2026-04-04T09:52:06.756524Z INFO property_map_server: Precomputed AI filters system prompt -2026-04-04T09:52:08.260112Z INFO property_map_server: All memory pages locked (mlockall) -2026-04-04T09:52:08.260151Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-04-04T09:52:13.107969Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:52:13.109123Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:52:13.304460Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=52 cells_after_filter=48 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.4 json_ms=0.0 total_ms=0.5 -2026-04-04T09:52:13.547742Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10805 filters=1 travel=0 total=8405 filters_raw="Listing status:Historical sale" ms=0.4 -2026-04-04T09:52:17.776220Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:52:17.776224Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:52:18.517199Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3403304 filters=4 travel=0 total=618194 filters_raw="Last known price:500000:inf;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" ms=35.5 -2026-04-04T09:52:19.574860Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=310268 parallel=true cells_before_filter=825 cells_after_filter=679 truncated=false bounds=51.4896,-0.2000,51.5404,-0.0600 filters=4 filters_raw="Last known price:500000:inf;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=8.1 json_ms=0.4 total_ms=8.5 -2026-04-04T09:52:19.849122Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=310268 filters=4 travel=0 total=90593 filters_raw="Last known price:500000:inf;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" ms=3.5 -2026-04-04T09:52:29.537989Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=52 cells_after_filter=48 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=2 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):0:535.7451" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.2 json_ms=0.0 total_ms=0.3 -2026-04-04T09:52:29.788060Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10805 filters=2 travel=0 total=8405 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):0:535.7451" ms=0.1 -2026-04-04T09:52:31.760171Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=52 cells_after_filter=48 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=1 filters_raw="Listing status:Historical sale" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.3 json_ms=0.0 total_ms=0.3 -2026-04-04T09:52:31.910715Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=52 cells_after_filter=48 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=2 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):0:535.7451" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.4 json_ms=0.1 total_ms=0.5 -2026-04-04T09:52:32.241961Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=52 cells_after_filter=48 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=2 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):36:535.7451" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.2 json_ms=0.0 total_ms=0.3 -2026-04-04T09:52:32.487304Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10805 filters=2 travel=0 total=8405 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):36:535.7451" ms=0.2 -2026-04-04T09:52:33.740148Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=52 cells_after_filter=48 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=1 filters_raw="Listing status:Historical sale" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.3 json_ms=0.0 total_ms=0.3 -2026-04-04T09:52:33.893888Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=52 cells_after_filter=48 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=2 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):36:535.7451" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.3 json_ms=0.0 total_ms=0.3 -2026-04-04T09:52:36.015267Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=52 cells_after_filter=48 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=2 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):49:535.7451" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.4 json_ms=0.0 total_ms=0.4 -2026-04-04T09:52:36.263117Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10805 filters=2 travel=0 total=8405 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):49:535.7451" ms=0.1 -2026-04-04T09:52:39.308908Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=52 cells_after_filter=48 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=3 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):49:535.7451;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.2 json_ms=0.0 total_ms=0.3 -2026-04-04T09:52:39.553104Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10805 filters=3 travel=0 total=8405 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):49:535.7451;;Good+ primary schools within 2km:0:49" ms=0.2 -2026-04-04T09:52:40.025321Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=52 cells_after_filter=48 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=2 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:0:49" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.3 json_ms=0.0 total_ms=0.3 -2026-04-04T09:52:40.177911Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=52 cells_after_filter=48 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=3 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):49:535.7451;;Good+ primary schools within 2km:0:49" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.3 json_ms=0.0 total_ms=0.3 -2026-04-04T09:52:40.491166Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=3 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):49:64;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.1 json_ms=0.0 total_ms=0.1 -2026-04-04T09:52:40.738811Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10805 filters=3 travel=0 total=0 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):49:64;;Good+ primary schools within 2km:0:49" ms=0.1 -2026-04-04T09:52:41.152105Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=52 cells_after_filter=48 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=2 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:0:49" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.3 json_ms=0.0 total_ms=0.3 -2026-04-04T09:52:41.292605Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=3 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):49:64;;Good+ primary schools within 2km:0:49" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.2 json_ms=0.0 total_ms=0.2 -2026-04-04T09:52:41.474731Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=3 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.1 json_ms=0.0 total_ms=0.1 -2026-04-04T09:52:41.722392Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10805 filters=3 travel=0 total=0 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64;;Good+ primary schools within 2km:0:49" ms=0.1 -2026-04-04T09:52:45.316167Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=2 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.2 json_ms=0.0 total_ms=0.2 -2026-04-04T09:52:45.462502Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=3 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64;;Good+ primary schools within 2km:0:49" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.1 json_ms=0.0 total_ms=0.1 -2026-04-04T09:52:46.611140Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=3 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64;;Good+ primary schools within 2km:0:2" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.2 json_ms=0.0 total_ms=0.2 -2026-04-04T09:52:46.857291Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10805 filters=3 travel=0 total=0 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64;;Good+ primary schools within 2km:0:2" ms=0.1 -2026-04-04T09:52:48.579776Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=2 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.2 json_ms=0.0 total_ms=0.2 -2026-04-04T09:52:48.726580Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=3 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64;;Good+ primary schools within 2km:0:2" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.2 json_ms=0.0 total_ms=0.2 -2026-04-04T09:52:48.923181Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=3 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64;;Good+ primary schools within 2km:0:7" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.1 json_ms=0.0 total_ms=0.1 -2026-04-04T09:52:49.172286Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10805 filters=3 travel=0 total=0 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64;;Good+ primary schools within 2km:0:7" ms=0.1 -2026-04-04T09:52:50.383769Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=2 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.2 json_ms=0.0 total_ms=0.2 -2026-04-04T09:52:50.657802Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=3 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64;;Good+ primary schools within 2km:0:9" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.1 json_ms=0.0 total_ms=0.1 -2026-04-04T09:52:50.908580Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10805 filters=3 travel=0 total=0 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64;;Good+ primary schools within 2km:0:9" ms=0.1 -2026-04-04T09:52:51.735856Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=2 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.2 json_ms=0.0 total_ms=0.2 -2026-04-04T09:52:52.024474Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=3 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.3 json_ms=0.0 total_ms=0.3 -2026-04-04T09:52:52.287937Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10805 filters=3 travel=0 total=0 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64;;Good+ primary schools within 2km:0:49" ms=0.2 -2026-04-04T09:52:55.588908Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=2 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.3 json_ms=0.0 total_ms=0.3 -2026-04-04T09:52:55.732332Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=3 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64;;Good+ primary schools within 2km:0:49" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.2 json_ms=0.0 total_ms=0.2 -2026-04-04T09:52:56.471661Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=10805 parallel=false cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.5033,-0.1421,51.5143,-0.1163 filters=3 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64;;Good+ primary schools within 2km:5:49" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.1 json_ms=0.0 total_ms=0.1 -2026-04-04T09:52:56.711090Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10805 filters=3 travel=0 total=0 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64;;Good+ primary schools within 2km:5:49" ms=0.1 -2026-04-04T09:52:57.939482Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=196 cells_after_filter=159 truncated=false bounds=51.4947,-0.1740,51.5324,-0.0851 filters=3 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64;;Good+ primary schools within 2km:5:49" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.1 total_ms=1.6 -2026-04-04T09:52:58.185654Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=138570 filters=3 travel=0 total=32010 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64;;Good+ primary schools within 2km:5:49" ms=1.8 -2026-04-04T09:52:59.656552Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=196 cells_after_filter=159 truncated=false bounds=51.4947,-0.1740,51.5324,-0.0851 filters=2 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.8 json_ms=0.2 total_ms=2.0 -2026-04-04T09:52:59.947433Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=196 cells_after_filter=159 truncated=false bounds=51.4947,-0.1740,51.5324,-0.0851 filters=3 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64;;Good+ primary schools within 2km:3:49" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.8 json_ms=0.1 total_ms=2.0 -2026-04-04T09:53:00.193546Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=138570 filters=3 travel=0 total=32010 filters_raw="Listing status:Historical sale;;Serious crime (avg/yr):35:64;;Good+ primary schools within 2km:3:49" ms=1.8 -2026-04-04T09:53:05.985267Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=399 cells_after_filter=341 truncated=false bounds=51.4947,-0.1740,51.5324,-0.0851 filters=2 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.6 json_ms=0.2 total_ms=1.9 -2026-04-04T09:53:06.237671Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=138570 filters=2 travel=0 total=112421 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49" ms=1.5 -2026-04-04T09:53:09.668444Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=399 cells_after_filter=341 truncated=false bounds=51.4947,-0.1740,51.5324,-0.0851 filters=3 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Education, Skills and Training Score:0:99.609" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.2 json_ms=0.2 total_ms=1.4 -2026-04-04T09:53:09.922342Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=138570 filters=3 travel=0 total=112421 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Education, Skills and Training Score:0:99.609" ms=1.5 -2026-04-04T09:53:10.539757Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=399 cells_after_filter=341 truncated=false bounds=51.4947,-0.1740,51.5324,-0.0851 filters=2 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.2 json_ms=0.3 total_ms=1.4 -2026-04-04T09:53:10.693514Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=399 cells_after_filter=341 truncated=false bounds=51.4947,-0.1740,51.5324,-0.0851 filters=3 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Education, Skills and Training Score:0:99.609" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.2 total_ms=1.5 -2026-04-04T09:53:10.912921Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=383 cells_after_filter=329 truncated=false bounds=51.4947,-0.1740,51.5324,-0.0851 filters=3 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Education, Skills and Training Score:82.9:99.609" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.2 total_ms=1.5 -2026-04-04T09:53:11.162011Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=138570 filters=3 travel=0 total=97636 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Education, Skills and Training Score:82.9:99.609" ms=1.6 -2026-04-04T09:53:13.646055Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=383 cells_after_filter=329 truncated=false bounds=51.4947,-0.1740,51.5324,-0.0851 filters=4 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Education, Skills and Training Score:82.9:99.609;;Good+ secondary schools within 2km:0:18" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.2 json_ms=0.2 total_ms=1.4 -2026-04-04T09:53:13.890592Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=138570 filters=4 travel=0 total=97636 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Education, Skills and Training Score:82.9:99.609;;Good+ secondary schools within 2km:0:18" ms=1.8 -2026-04-04T09:53:15.774963Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=383 cells_after_filter=329 truncated=false bounds=51.4947,-0.1740,51.5324,-0.0851 filters=3 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Education, Skills and Training Score:82.9:99.609" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.4 json_ms=0.2 total_ms=1.6 -2026-04-04T09:53:15.917610Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=383 cells_after_filter=329 truncated=false bounds=51.4947,-0.1740,51.5324,-0.0851 filters=4 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Education, Skills and Training Score:82.9:99.609;;Good+ secondary schools within 2km:0:18" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.2 json_ms=0.2 total_ms=1.5 -2026-04-04T09:53:16.244314Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=383 cells_after_filter=329 truncated=false bounds=51.4947,-0.1740,51.5324,-0.0851 filters=4 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Education, Skills and Training Score:82.9:99.609;;Good+ secondary schools within 2km:0:18" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.2 total_ms=1.5 -2026-04-04T09:53:16.482315Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=138570 filters=4 travel=0 total=97636 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Education, Skills and Training Score:82.9:99.609;;Good+ secondary schools within 2km:0:18" ms=1.9 -2026-04-04T09:53:16.757756Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=383 cells_after_filter=329 truncated=false bounds=51.4947,-0.1740,51.5324,-0.0851 filters=3 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Education, Skills and Training Score:82.9:99.609" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.3 total_ms=1.4 -2026-04-04T09:53:16.903127Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=383 cells_after_filter=329 truncated=false bounds=51.4947,-0.1740,51.5324,-0.0851 filters=4 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Education, Skills and Training Score:82.9:99.609;;Good+ secondary schools within 2km:0:18" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.2 json_ms=0.3 total_ms=1.5 -2026-04-04T09:53:17.198701Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=383 cells_after_filter=329 truncated=false bounds=51.4947,-0.1740,51.5324,-0.0851 filters=4 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Education, Skills and Training Score:82.9:99.609;;Good+ secondary schools within 2km:1:18" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.2 json_ms=0.2 total_ms=1.5 -2026-04-04T09:53:17.446671Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=138570 filters=4 travel=0 total=97636 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Education, Skills and Training Score:82.9:99.609;;Good+ secondary schools within 2km:1:18" ms=1.9 -2026-04-04T09:54:06.836832Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=310268 parallel=true cells_before_filter=825 cells_after_filter=679 truncated=false bounds=51.4896,-0.2000,51.5404,-0.0600 filters=4 filters_raw="Last known price:500000:inf;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.1 json_ms=0.5 total_ms=2.6 -2026-04-04T09:54:07.112902Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=310268 filters=4 travel=0 total=90593 filters_raw="Last known price:500000:inf;;Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" ms=3.3 -2026-04-04T09:55:34.040391Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=310268 parallel=true cells_before_filter=844 cells_after_filter=685 truncated=false bounds=51.4896,-0.2000,51.5404,-0.0600 filters=3 filters_raw="Price per sqm:12:30070.744;;Estimated monthly rent:300:7750;;Good+ primary schools within 2km:0:49" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.1 json_ms=0.4 total_ms=2.5 -2026-04-04T09:55:34.584934Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=310268 parallel=true cells_before_filter=879 cells_after_filter=711 truncated=false bounds=51.4896,-0.2000,51.5404,-0.0600 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.6 json_ms=0.6 total_ms=2.2 -2026-04-04T09:55:41.928304Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=310268 parallel=true cells_before_filter=853 cells_after_filter=692 truncated=false bounds=51.4896,-0.2000,51.5404,-0.0600 filters=1 filters_raw="Former council house:Yes|No" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.9 json_ms=0.4 total_ms=3.3 -2026-04-04T09:55:42.186681Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=310268 filters=1 travel=0 total=221385 filters_raw="Former council house:Yes|No" ms=9.5 -2026-04-04T09:55:43.463209Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=310268 parallel=true cells_before_filter=771 cells_after_filter=635 truncated=false bounds=51.4896,-0.2000,51.5404,-0.0600 filters=1 filters_raw="Former council house:Yes" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.0 json_ms=0.3 total_ms=2.4 -2026-04-04T09:55:43.737057Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=310268 filters=1 travel=0 total=8802 filters_raw="Former council house:Yes" ms=9.4 -2026-04-04T09:55:44.388585Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da4b93ffff resolution=9 total_count=46 filters=1 filters_raw="Former council house:Yes" ms=0.2 -2026-04-04T09:55:44.598274Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=267143 parallel=true cells_before_filter=663 cells_after_filter=517 truncated=false bounds=51.4896,-0.1877,51.5404,-0.0723 filters=1 filters_raw="Former council house:Yes" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.8 json_ms=0.3 total_ms=2.1 -2026-04-04T09:55:44.837518Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=267143 filters=1 travel=0 total=7227 filters_raw="Former council house:Yes" ms=7.4 -2026-04-04T09:55:45.943713Z INFO property_map_server::routes::properties: GET /api/hexagon-properties h3=89195da4b93ffff resolution=9 total=46 returned=46 offset=0 filters=1 filters_raw="Former council house:Yes" ms=0.4 -2026-04-04T09:55:53.228291Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=538838 parallel=true cells_before_filter=1545 cells_after_filter=1438 truncated=false bounds=51.4691,-0.2443,51.5576,-0.0437 filters=1 filters_raw="Former council house:Yes" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=3.4 json_ms=0.9 total_ms=4.3 -2026-04-04T09:55:54.139826Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1286389 filters=1 travel=0 total=39191 filters_raw="Former council house:Yes" ms=38.6 -2026-04-04T09:55:55.294889Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=267143 parallel=true cells_before_filter=663 cells_after_filter=517 truncated=false bounds=51.4896,-0.1877,51.5404,-0.0723 filters=1 filters_raw="Former council house:Yes" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.1 json_ms=0.3 total_ms=2.4 -2026-04-04T09:55:55.608290Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=267143 filters=1 travel=0 total=7227 filters_raw="Former council house:Yes" ms=8.1 -2026-04-04T09:56:54.660904Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=383 cells_after_filter=329 truncated=false bounds=51.4947,-0.1740,51.5324,-0.0851 filters=3 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Education, Skills and Training Score:82.9:99.609" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.3 total_ms=1.6 -2026-04-04T09:56:54.809750Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=383 cells_after_filter=329 truncated=false bounds=51.4947,-0.1740,51.5324,-0.0851 filters=4 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Education, Skills and Training Score:82.9:99.609;;Good+ secondary schools within 2km:1:18" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.4 json_ms=0.2 total_ms=1.7 -2026-04-04T09:57:04.149232Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=399 cells_after_filter=341 truncated=false bounds=51.4947,-0.1740,51.5324,-0.0851 filters=2 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.3 total_ms=1.8 -2026-04-04T09:57:04.303078Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=399 cells_after_filter=341 truncated=false bounds=51.4947,-0.1740,51.5324,-0.0851 filters=3 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Good+ secondary schools within 2km:1:18" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.3 total_ms=1.6 -2026-04-04T09:57:04.549588Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=138570 filters=3 travel=0 total=112421 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Good+ secondary schools within 2km:1:18" ms=2.0 -2026-04-04T09:57:17.202032Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T09:57:17.202686Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T09:57:17.440798Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=399 cells_after_filter=346 truncated=false bounds=51.4945,-0.1746,51.5327,-0.0844 filters=3 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Good+ secondary schools within 2km:1:18" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.2 total_ms=1.7 -2026-04-04T09:57:17.691060Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=138570 filters=3 travel=0 total=112421 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Good+ secondary schools within 2km:1:18" ms=1.7 -2026-04-04T09:57:18.786724Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=399 cells_after_filter=346 truncated=false bounds=51.4945,-0.1746,51.5327,-0.0844 filters=3 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Good+ secondary schools within 2km:1:18" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.4 json_ms=0.3 total_ms=1.7 -2026-04-04T09:57:19.792385Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=399 cells_after_filter=346 truncated=false bounds=51.4945,-0.1746,51.5327,-0.0844 filters=3 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Good+ secondary schools within 2km:1:18" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.3 total_ms=1.8 -2026-04-04T09:57:20.703555Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=399 cells_after_filter=346 truncated=false bounds=51.4945,-0.1746,51.5327,-0.0844 filters=3 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Good+ secondary schools within 2km:1:18" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.4 json_ms=0.2 total_ms=1.6 -2026-04-04T09:57:23.441270Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=399 cells_after_filter=346 truncated=false bounds=51.4945,-0.1746,51.5327,-0.0844 filters=2 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.4 json_ms=0.3 total_ms=1.6 -2026-04-04T09:57:23.587427Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=399 cells_after_filter=346 truncated=false bounds=51.4945,-0.1746,51.5327,-0.0844 filters=3 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Good+ secondary schools within 2km:1:18" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.3 total_ms=1.5 -2026-04-04T09:57:23.802126Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=393 cells_after_filter=340 truncated=false bounds=51.4945,-0.1746,51.5327,-0.0844 filters=3 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Good+ secondary schools within 2km:2:18" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.6 json_ms=0.2 total_ms=1.8 -2026-04-04T09:57:24.051097Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=138570 filters=3 travel=0 total=107687 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Good+ secondary schools within 2km:2:18" ms=1.8 -2026-04-04T09:57:25.937699Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=393 cells_after_filter=340 truncated=false bounds=51.4945,-0.1746,51.5327,-0.0844 filters=2 filters_raw="Listing status:Historical sale;;Good+ secondary schools within 2km:2:18" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.2 total_ms=1.7 -2026-04-04T09:57:26.080544Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=393 cells_after_filter=340 truncated=false bounds=51.4945,-0.1746,51.5327,-0.0844 filters=3 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:3:49;;Good+ secondary schools within 2km:2:18" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.3 total_ms=1.6 -2026-04-04T09:57:26.390697Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=393 cells_after_filter=340 truncated=false bounds=51.4945,-0.1746,51.5327,-0.0844 filters=3 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:7:49;;Good+ secondary schools within 2km:2:18" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.2 total_ms=1.7 -2026-04-04T09:57:26.641621Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=138570 filters=3 travel=0 total=107670 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:7:49;;Good+ secondary schools within 2km:2:18" ms=1.7 -2026-04-04T09:57:28.175318Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=393 cells_after_filter=340 truncated=false bounds=51.4945,-0.1746,51.5327,-0.0844 filters=2 filters_raw="Listing status:Historical sale;;Good+ secondary schools within 2km:2:18" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.3 total_ms=1.5 -2026-04-04T09:57:28.457899Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=389 cells_after_filter=336 truncated=false bounds=51.4945,-0.1746,51.5327,-0.0844 filters=3 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:10:49;;Good+ secondary schools within 2km:2:18" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.2 total_ms=1.5 -2026-04-04T09:57:28.701294Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=138570 filters=3 travel=0 total=106656 filters_raw="Listing status:Historical sale;;Good+ primary schools within 2km:10:49;;Good+ secondary schools within 2km:2:18" ms=1.7 -2026-04-04T09:57:30.569829Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=393 cells_after_filter=340 truncated=false bounds=51.4945,-0.1746,51.5327,-0.0844 filters=2 filters_raw="Listing status:Historical sale;;Good+ secondary schools within 2km:2:18" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.2 total_ms=1.5 -2026-04-04T09:57:30.805473Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=138570 filters=2 travel=0 total=107687 filters_raw="Listing status:Historical sale;;Good+ secondary schools within 2km:2:18" ms=1.5 -2026-04-04T09:57:32.404849Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=399 cells_after_filter=346 truncated=false bounds=51.4945,-0.1746,51.5327,-0.0844 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.2 json_ms=0.2 total_ms=1.4 -2026-04-04T09:57:32.655967Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=138570 filters=1 travel=0 total=112421 filters_raw="Listing status:Historical sale" ms=4.2 -2026-04-04T09:57:37.029036Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138570 parallel=true cells_before_filter=399 cells_after_filter=304 truncated=false bounds=51.4972,-0.1746,51.5300,-0.0844 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.2 total_ms=1.5 -2026-04-04T09:57:37.277670Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=138570 filters=1 travel=0 total=112421 filters_raw="Listing status:Historical sale" ms=4.0 -2026-04-04T09:57:38.013138Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=223855 parallel=true cells_before_filter=647 cells_after_filter=561 truncated=false bounds=51.4800,-0.1746,51.5472,-0.0844 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.4 json_ms=0.4 total_ms=2.7 -2026-04-04T09:57:38.264644Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=223855 filters=1 travel=0 total=185222 filters_raw="Listing status:Historical sale" ms=6.9 -2026-04-04T09:57:39.240772Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=172534 parallel=true cells_before_filter=475 cells_after_filter=409 truncated=false bounds=51.4898,-0.1746,51.5374,-0.0844 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.6 json_ms=0.2 total_ms=1.8 -2026-04-04T09:57:39.498901Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=172534 filters=1 travel=0 total=139912 filters_raw="Listing status:Historical sale" ms=5.2 -2026-04-04T09:57:42.717623Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=223855 parallel=true cells_before_filter=647 cells_after_filter=577 truncated=false bounds=51.4781,-0.1746,51.5491,-0.0844 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.0 json_ms=0.3 total_ms=2.3 -2026-04-04T09:57:42.969460Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=223855 filters=1 travel=0 total=185222 filters_raw="Listing status:Historical sale" ms=6.9 -2026-04-04T09:57:44.682704Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=223855 parallel=true cells_before_filter=647 cells_after_filter=577 truncated=false bounds=51.4781,-0.1746,51.5491,-0.0844 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.9 json_ms=0.3 total_ms=2.2 -2026-04-04T09:57:44.937421Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=223855 filters=1 travel=0 total=185222 filters_raw="Listing status:Historical sale" ms=6.8 -2026-04-04T09:57:46.684676Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=75509 parallel=true cells_before_filter=235 cells_after_filter=189 truncated=false bounds=51.5052,-0.1746,51.5220,-0.0844 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.1 total_ms=1.1 -2026-04-04T09:57:46.937811Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=75509 filters=1 travel=0 total=60159 filters_raw="Listing status:Historical sale" ms=2.4 -2026-04-04T09:57:47.784802Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=223855 parallel=true cells_before_filter=647 cells_after_filter=577 truncated=false bounds=51.4781,-0.1746,51.5491,-0.0844 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.7 json_ms=0.3 total_ms=2.0 -2026-04-04T09:57:50.373082Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=75509 parallel=true cells_before_filter=235 cells_after_filter=189 truncated=false bounds=51.5052,-0.1746,51.5220,-0.0844 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.1 total_ms=1.1 -2026-04-04T09:57:51.219922Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=563 cells_after_filter=511 truncated=false bounds=51.4835,-0.1746,51.5437,-0.0844 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.8 json_ms=0.3 total_ms=2.1 -2026-04-04T09:57:51.473666Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=199182 filters=1 travel=0 total=163447 filters_raw="Listing status:Historical sale" ms=6.1 -2026-04-04T16:39:54.658472Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T16:39:54.658668Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-04-04T16:39:54.658678Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-04-04T16:39:54.812468Z INFO property_map_server::data::property: Postcode features loaded rows=1262364 -2026-04-04T16:39:54.812480Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-04-04T16:39:57.851031Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203393 -2026-04-04T16:39:57.851044Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-04-04T16:39:58.333504Z INFO property_map_server::data::property: buy listings joined rows=1060501 -2026-04-04T16:39:58.333527Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-04-04T16:39:58.466642Z INFO property_map_server::data::property: rent listings joined rows=266585 -2026-04-04T16:39:58.466651Z INFO property_map_server::data::property: Concatenating all data sources -2026-04-04T16:40:03.801219Z INFO property_map_server::data::property: All data sources combined properties=15203393 buy_listings=1060501 rent_listings=266585 total=16530479 -2026-04-04T16:40:03.801296Z INFO property_map_server::data::property: Feature columns from config numeric=58 enums=7 total=65 -2026-04-04T16:40:05.224951Z INFO property_map_server::data::property: Combined data selected rows=16530479 -2026-04-04T16:40:05.384825Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-04-04T16:40:05.800951Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-04-04T16:40:07.052140Z INFO property_map_server::data::property: Extracting string columns -2026-04-04T16:40:09.411155Z INFO property_map_server::data::property: Building enum features -2026-04-04T16:40:10.729165Z INFO property_map_server::data::property: Extracting renovation history -2026-04-04T16:40:12.827870Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829784 -2026-04-04T16:40:12.827881Z INFO property_map_server::data::property: Extracting listing features -2026-04-04T16:40:13.522059Z INFO property_map_server::data::property: Listing features extracted properties_with_features=527541 -2026-04-04T16:40:13.522068Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-04-04T16:40:14.411754Z INFO property_map_server::data::property: Building interned strings -2026-04-04T16:40:20.776006Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-04-04T16:40:23.481346Z INFO property_map_server::data::property: Data loading complete -2026-04-04T16:40:25.167424Z INFO property_map_server: Property data loaded rows=16530479 features=65 enums=7 -2026-04-04T16:40:25.167433Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-04-04T16:40:25.265061Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-04-04T16:40:25.265071Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-04-04T16:40:25.670091Z INFO property_map_server::data::property: H3 precomputation complete (16530479 cells) -2026-04-04T16:40:25.670114Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-04-04T16:40:25.670120Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-04-04T16:40:25.691903Z INFO property_map_server::data::poi: Loaded 550611 POIs -2026-04-04T16:40:25.786559Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-04-04T16:40:25.787027Z INFO property_map_server::data::poi: POI data loading complete. -2026-04-04T16:40:25.815918Z INFO property_map_server: POI data loaded pois=550611 -2026-04-04T16:40:25.815928Z INFO property_map_server: Building POI spatial grid index -2026-04-04T16:40:25.820658Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-04-04T16:40:25.820667Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-04-04T16:40:25.822625Z INFO property_map_server::data::places: Loaded 3474 places -2026-04-04T16:40:25.823340Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-04-04T16:40:25.823405Z INFO property_map_server: Place data loaded places=3474 -2026-04-04T16:40:25.823413Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-04-04T16:40:25.823416Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-04-04T16:40:25.826692Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-04-04T16:40:33.217429Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-04-04T16:40:33.453668Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-04-04T16:40:33.594039Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-04-04T16:40:33.594099Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-04-04T16:40:33.598517Z INFO property_map_server: PMTiles loaded successfully -2026-04-04T16:40:33.633335Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-04-04T16:40:33.664761Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-04-04T16:40:33.664816Z INFO property_map_server: Precomputed features response groups=7 -2026-04-04T16:40:33.664833Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-04-04T16:40:33.731537Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-04-04T16:40:33.734637Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-04-04T16:40:33.738612Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-04-04T16:40:33.786159Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-04-04T16:40:33.789573Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-04-04T16:40:33.789588Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-04-04T16:40:33.789601Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-04-04T16:40:33.796514Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2753 -2026-04-04T16:40:33.803024Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=2753 -2026-04-04T16:40:33.809734Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=2753 -2026-04-04T16:40:33.814443Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=2752 -2026-04-04T16:40:33.814462Z INFO property_map_server: Travel time store loaded modes=4 -2026-04-04T16:40:33.814505Z INFO property_map_server: Precomputed AI filters system prompt -2026-04-04T16:40:38.841370Z INFO property_map_server: All memory pages locked (mlockall) -2026-04-04T16:40:38.841413Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-04-04T16:45:08.608456Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T16:45:08.608463Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T16:45:08.920241Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=310268 parallel=true cells_before_filter=771 cells_after_filter=635 truncated=false bounds=51.4896,-0.2000,51.5404,-0.0600 filters=1 filters_raw="Former council house:Yes" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=7.0 json_ms=0.4 total_ms=7.4 -2026-04-04T16:45:09.177392Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=310268 filters=1 travel=0 total=8802 filters_raw="Former council house:Yes" ms=9.1 -2026-04-04T16:45:26.974416Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T16:45:26.975311Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T16:45:41.467910Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=435543 parallel=true cells_before_filter=1322 cells_after_filter=1268 truncated=false bounds=51.4729,-0.2093,51.5624,-0.0533 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=5.1 json_ms=0.8 total_ms=5.9 -2026-04-04T16:45:44.805432Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T16:45:44.805447Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T16:45:45.124965Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=435543 parallel=true cells_before_filter=1295 cells_after_filter=1236 truncated=false bounds=51.4733,-0.2085,51.5619,-0.0541 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=4.6 json_ms=0.8 total_ms=5.3 -2026-04-04T16:45:45.340277Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=435543 filters=1 travel=0 total=370010 filters_raw="Listing status:Historical sale" ms=12.8 -2026-04-04T16:45:55.770809Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=435543 parallel=true cells_before_filter=1295 cells_after_filter=1236 truncated=false bounds=51.4733,-0.2085,51.5619,-0.0541 filters=1 filters_raw="Listing status:Historical sale" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=3.4 json_ms=1.0 total_ms=4.4 -2026-04-04T16:45:56.902873Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=861141 parallel=true cells_before_filter=3022 cells_after_filter=2854 truncated=false bounds=51.4453,-0.2435,51.5847,-0.0006 filters=1 filters_raw="Listing status:Historical sale" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=7.2 json_ms=2.5 total_ms=9.7 -2026-04-04T16:45:57.144730Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=861141 filters=1 travel=0 total=750424 filters_raw="Listing status:Historical sale" ms=26.4 -2026-04-04T16:45:58.647828Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=234961 parallel=true cells_before_filter=690 cells_after_filter=599 truncated=false bounds=51.4918,-0.1847,51.5522,-0.0794 filters=1 filters_raw="Listing status:Historical sale" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=2.1 json_ms=0.5 total_ms=2.6 -2026-04-04T16:45:58.896370Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=234961 filters=1 travel=0 total=196263 filters_raw="Listing status:Historical sale" ms=7.1 -2026-04-04T16:45:59.568596Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=81076 parallel=true cells_before_filter=279 cells_after_filter=221 truncated=false bounds=51.5074,-0.1649,51.5412,-0.1060 filters=1 filters_raw="Listing status:Historical sale" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.2 total_ms=1.2 -2026-04-04T16:45:59.821068Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=81076 filters=1 travel=0 total=65545 filters_raw="Listing status:Historical sale" ms=2.9 -2026-04-04T16:46:05.189591Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=81076 parallel=true cells_before_filter=279 cells_after_filter=221 truncated=false bounds=51.5074,-0.1649,51.5412,-0.1060 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.2 total_ms=1.3 -2026-04-04T16:46:05.883781Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=81076 parallel=true cells_before_filter=279 cells_after_filter=221 truncated=false bounds=51.5074,-0.1649,51.5412,-0.1060 filters=1 filters_raw="Listing status:Historical sale" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.9 json_ms=0.2 total_ms=1.1 -2026-04-04T16:46:07.800636Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=256335 parallel=true cells_before_filter=750 cells_after_filter=698 truncated=false bounds=51.4905,-0.1849,51.5568,-0.0693 filters=1 filters_raw="Listing status:Historical sale" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=2.2 json_ms=0.6 total_ms=2.8 -2026-04-04T16:46:08.060843Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=256335 filters=1 travel=0 total=215003 filters_raw="Listing status:Historical sale" ms=7.8 -2026-04-04T16:47:26.186916Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=256335 parallel=true cells_before_filter=750 cells_after_filter=698 truncated=false bounds=51.4905,-0.1849,51.5568,-0.0693 filters=1 filters_raw="Listing status:Historical sale" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=2.5 json_ms=0.6 total_ms=3.1 -2026-04-04T16:47:26.450203Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=256335 filters=1 travel=0 total=215003 filters_raw="Listing status:Historical sale" ms=7.9 -2026-04-04T16:47:28.349057Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T16:47:28.349059Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T16:47:28.651152Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=256335 parallel=true cells_before_filter=750 cells_after_filter=706 truncated=false bounds=51.4900,-0.1856,51.5571,-0.0686 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.2 json_ms=0.4 total_ms=2.6 -2026-04-04T16:47:28.902368Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=256335 filters=1 travel=0 total=215003 filters_raw="Listing status:Historical sale" ms=7.8 -2026-04-04T16:47:33.552744Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=256335 parallel=true cells_before_filter=750 cells_after_filter=706 truncated=false bounds=51.4900,-0.1856,51.5571,-0.0686 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.1 json_ms=0.3 total_ms=2.5 -2026-04-04T16:47:33.809693Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=256335 filters=1 travel=0 total=215003 filters_raw="Listing status:Historical sale" ms=7.4 -2026-04-04T16:47:39.079308Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T16:47:39.079311Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T16:49:13.301599Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T16:49:13.301607Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T16:49:13.679867Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=256335 parallel=true cells_before_filter=750 cells_after_filter=706 truncated=false bounds=51.4900,-0.1856,51.5571,-0.0686 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.2 json_ms=0.4 total_ms=2.5 -2026-04-04T16:49:13.841398Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=256335 filters=1 travel=0 total=215003 filters_raw="Listing status:Historical sale" ms=7.5 -2026-04-04T16:57:13.826311Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T16:57:13.826313Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T16:57:14.213065Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=256335 parallel=true cells_before_filter=750 cells_after_filter=706 truncated=false bounds=51.4900,-0.1856,51.5571,-0.0686 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.2 json_ms=0.4 total_ms=2.6 -2026-04-04T16:57:14.441819Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=256335 filters=1 travel=0 total=215003 filters_raw="Listing status:Historical sale" ms=7.6 -2026-04-04T17:33:13.797118Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=256335 parallel=true cells_before_filter=750 cells_after_filter=706 truncated=false bounds=51.4900,-0.1856,51.5571,-0.0686 filters=1 filters_raw="Listing status:Historical sale" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=2.1 json_ms=0.6 total_ms=2.7 -2026-04-04T17:33:20.909853Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T17:33:20.910876Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T17:33:38.921153Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T17:33:38.922096Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T17:34:01.172545Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=580 cells_after_filter=457 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.8 json_ms=0.3 total_ms=2.1 -2026-04-04T17:34:01.420765Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=199182 filters=1 travel=0 total=199182 filters_raw="Listing status:Historical sale|For sale|For rent" ms=5.7 -2026-04-04T17:34:03.085721Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=580 cells_after_filter=457 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=2 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.6 json_ms=0.2 total_ms=1.9 -2026-04-04T17:34:03.386412Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=199182 filters=2 travel=0 total=199182 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=4.3 -2026-04-04T17:34:03.702911Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=575 cells_after_filter=454 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=3 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.9 json_ms=0.3 total_ms=2.1 -2026-04-04T17:34:04.096076Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=538 cells_after_filter=433 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=4 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.3 total_ms=1.6 -2026-04-04T17:34:04.475772Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=520 cells_after_filter=420 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=5 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.2 total_ms=1.6 -2026-04-04T17:34:04.725663Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=199182 filters=5 travel=0 total=7158 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" ms=1.4 -2026-04-04T17:34:07.655205Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=520 cells_after_filter=420 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=5 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.3 total_ms=1.6 -2026-04-04T17:34:17.331607Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T17:34:17.332627Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T17:34:17.693823Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=520 cells_after_filter=420 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=5 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.2 total_ms=1.6 -2026-04-04T17:34:17.910666Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=199182 filters=5 travel=0 total=7158 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" ms=1.2 -2026-04-04T17:34:19.108010Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=520 cells_after_filter=420 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=5 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.3 total_ms=1.6 -2026-04-04T17:39:40.688252Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T17:39:40.688255Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T17:39:41.010461Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=520 cells_after_filter=420 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=5 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.4 json_ms=0.2 total_ms=1.6 -2026-04-04T17:39:41.296845Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=199182 filters=5 travel=0 total=7158 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" ms=1.4 -2026-04-04T17:39:42.509600Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=520 cells_after_filter=420 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=5 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.4 json_ms=0.3 total_ms=1.8 -2026-04-04T17:39:44.239048Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=696197 parallel=true cells_before_filter=1951 cells_after_filter=1879 truncated=false bounds=51.4548,-0.2169,51.5734,-0.0103 filters=5 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=4.0 json_ms=1.4 total_ms=5.4 -2026-04-04T17:39:44.486522Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=696197 filters=5 travel=0 total=17150 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" ms=3.6 -2026-04-04T17:39:45.324769Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1674796 filters=5 travel=0 total=30076 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" ms=10.6 -2026-04-04T17:39:48.176839Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=520 cells_after_filter=420 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=5 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.3 total_ms=1.8 -2026-04-04T17:39:48.461691Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=199182 filters=5 travel=0 total=7158 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" ms=1.4 -2026-04-04T17:39:50.099685Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=62591 parallel=true cells_before_filter=205 cells_after_filter=173 truncated=false bounds=51.5007,-0.1629,51.5329,-0.1068 filters=5 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.8 json_ms=0.1 total_ms=0.9 -2026-04-04T17:39:50.360489Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=62591 filters=5 travel=0 total=2739 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" ms=0.4 -2026-04-04T17:39:53.467402Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=62591 parallel=true cells_before_filter=208 cells_after_filter=175 truncated=false bounds=51.5007,-0.1629,51.5329,-0.1068 filters=4 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Asking price:1:inf;;Asking price per sqm:0:49347.58" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.6 json_ms=0.1 total_ms=0.8 -2026-04-04T17:39:53.721076Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=62591 filters=4 travel=0 total=3464 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Asking price:1:inf;;Asking price per sqm:0:49347.58" ms=0.5 -2026-04-04T17:39:54.747753Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=62591 parallel=true cells_before_filter=208 cells_after_filter=175 truncated=false bounds=51.5007,-0.1629,51.5329,-0.1068 filters=3 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Asking price per sqm:0:49347.58" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.7 json_ms=0.1 total_ms=0.8 -2026-04-04T17:39:54.995568Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=62591 filters=3 travel=0 total=3464 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Asking price per sqm:0:49347.58" ms=0.8 -2026-04-04T17:39:55.634572Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=62591 parallel=true cells_before_filter=229 cells_after_filter=190 truncated=false bounds=51.5007,-0.1629,51.5329,-0.1068 filters=2 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.9 json_ms=0.2 total_ms=1.1 -2026-04-04T17:39:55.888482Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=62591 filters=2 travel=0 total=62591 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.9 -2026-04-04T17:39:57.262537Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=62591 parallel=true cells_before_filter=229 cells_after_filter=190 truncated=false bounds=51.5007,-0.1629,51.5329,-0.1068 filters=2 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.9 json_ms=0.1 total_ms=1.0 -2026-04-04T17:39:57.936201Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=62591 parallel=true cells_before_filter=229 cells_after_filter=190 truncated=false bounds=51.5007,-0.1629,51.5329,-0.1068 filters=2 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.2 total_ms=1.1 -2026-04-04T17:40:28.881567Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T17:40:28.881783Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T17:40:30.310586Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=24630 parallel=false cells_before_filter=101 cells_after_filter=57 truncated=false bounds=51.5095,-0.1429,51.5205,-0.1171 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.1 total_ms=1.1 -2026-04-04T17:40:30.566156Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=24630 filters=1 travel=0 total=18876 filters_raw="Listing status:Historical sale" ms=0.8 -2026-04-04T17:40:31.885745Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=24630 parallel=false cells_before_filter=101 cells_after_filter=80 truncated=false bounds=51.5048,-0.1429,51.5252,-0.1171 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.1 total_ms=1.2 -2026-04-04T17:40:32.135311Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=24630 filters=1 travel=0 total=18876 filters_raw="Listing status:Historical sale" ms=0.7 -2026-04-04T17:40:34.218609Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=24630 parallel=false cells_before_filter=101 cells_after_filter=69 truncated=false bounds=51.5072,-0.1429,51.5228,-0.1171 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.1 total_ms=1.2 -2026-04-04T17:40:34.473260Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=24630 filters=1 travel=0 total=18876 filters_raw="Listing status:Historical sale" ms=0.8 -2026-04-04T17:40:37.046020Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=24630 parallel=false cells_before_filter=101 cells_after_filter=70 truncated=false bounds=51.5069,-0.1429,51.5231,-0.1171 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.1 total_ms=1.1 -2026-04-04T17:40:37.289616Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=24630 filters=1 travel=0 total=18876 filters_raw="Listing status:Historical sale" ms=0.8 -2026-04-04T17:42:08.253043Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=62591 parallel=true cells_before_filter=229 cells_after_filter=190 truncated=false bounds=51.5007,-0.1629,51.5329,-0.1068 filters=2 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.2 total_ms=1.2 -2026-04-04T17:42:08.318527Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=24630 parallel=false cells_before_filter=101 cells_after_filter=70 truncated=false bounds=51.5069,-0.1429,51.5231,-0.1171 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.2 json_ms=0.0 total_ms=1.2 -2026-04-04T17:42:08.497017Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=62591 filters=2 travel=0 total=62591 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=1.0 -2026-04-04T17:42:08.570904Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=24630 filters=1 travel=0 total=18876 filters_raw="Listing status:Historical sale" ms=0.7 -2026-04-04T17:42:13.334753Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=24630 parallel=false cells_before_filter=101 cells_after_filter=70 truncated=false bounds=51.5069,-0.1429,51.5231,-0.1171 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.1 total_ms=1.1 -2026-04-04T17:42:13.587373Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=24630 filters=1 travel=0 total=18876 filters_raw="Listing status:Historical sale" ms=0.8 -2026-04-04T17:42:13.724677Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=62591 parallel=true cells_before_filter=229 cells_after_filter=190 truncated=false bounds=51.5007,-0.1629,51.5329,-0.1068 filters=2 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.2 total_ms=1.2 -2026-04-04T17:42:13.983542Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=62591 filters=2 travel=0 total=62591 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.8 -2026-04-04T17:42:27.133538Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=62591 parallel=true cells_before_filter=229 cells_after_filter=190 truncated=false bounds=51.5007,-0.1629,51.5329,-0.1068 filters=2 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.2 total_ms=1.3 -2026-04-04T17:42:27.161700Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=24630 parallel=false cells_before_filter=101 cells_after_filter=70 truncated=false bounds=51.5069,-0.1429,51.5231,-0.1171 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.1 total_ms=1.2 -2026-04-04T17:42:27.368301Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=62591 filters=2 travel=0 total=62591 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.8 -2026-04-04T17:42:27.418572Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=24630 filters=1 travel=0 total=18876 filters_raw="Listing status:Historical sale" ms=0.9 -2026-04-04T17:43:36.353481Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=24630 parallel=false cells_before_filter=101 cells_after_filter=57 truncated=false bounds=51.5095,-0.1429,51.5205,-0.1171 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.1 total_ms=1.1 -2026-04-04T17:43:36.480526Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=520 cells_after_filter=420 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=5 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.6 json_ms=0.2 total_ms=1.9 -2026-04-04T17:43:36.608010Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=24630 filters=1 travel=0 total=18876 filters_raw="Listing status:Historical sale" ms=0.8 -2026-04-04T17:43:36.717922Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=199182 filters=5 travel=0 total=7158 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" ms=1.1 -2026-04-04T17:43:46.111166Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=520 cells_after_filter=420 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=5 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.4 json_ms=0.3 total_ms=1.6 -2026-04-04T17:43:46.375625Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=199182 filters=5 travel=0 total=7158 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" ms=1.1 -2026-04-04T17:44:15.469791Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T17:44:15.473379Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T17:44:15.597503Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=520 cells_after_filter=420 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=5 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.4 json_ms=0.2 total_ms=1.6 -2026-04-04T17:44:15.689501Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=24630 parallel=false cells_before_filter=101 cells_after_filter=57 truncated=false bounds=51.5095,-0.1429,51.5205,-0.1171 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.0 total_ms=1.1 -2026-04-04T17:44:15.837137Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=199182 filters=5 travel=0 total=7158 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" ms=1.2 -2026-04-04T17:44:15.943048Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=24630 filters=1 travel=0 total=18876 filters_raw="Listing status:Historical sale" ms=0.8 -2026-04-04T17:50:58.654430Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T17:50:58.654914Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T17:50:58.906179Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=24630 parallel=false cells_before_filter=101 cells_after_filter=57 truncated=false bounds=51.5095,-0.1429,51.5205,-0.1171 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.9 json_ms=0.0 total_ms=1.0 -2026-04-04T17:50:59.154328Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=24630 filters=1 travel=0 total=18876 filters_raw="Listing status:Historical sale" ms=0.7 -2026-04-04T17:51:01.432180Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=24630 parallel=false cells_before_filter=101 cells_after_filter=68 truncated=false bounds=51.5074,-0.1429,51.5226,-0.1171 filters=1 filters_raw="Listing status:Historical sale" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.1 total_ms=1.2 -2026-04-04T17:51:01.678141Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=24630 filters=1 travel=0 total=18876 filters_raw="Listing status:Historical sale" ms=0.8 -2026-04-04T17:51:44.241484Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.3 -2026-04-04T17:51:44.266755Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T17:51:44.266754Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T17:52:03.103744Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T17:52:03.103746Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T17:52:03.453791Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=267143 parallel=true cells_before_filter=764 cells_after_filter=717 truncated=false bounds=51.4826,-0.1878,51.5498,-0.0708 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.3 json_ms=0.4 total_ms=2.7 -2026-04-04T17:52:03.660920Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=267143 filters=1 travel=0 total=267143 filters_raw="Listing status:Historical sale|For sale|For rent" ms=7.6 -2026-04-04T17:52:08.220466Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T17:52:08.220470Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T17:52:08.480217Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=267143 parallel=true cells_before_filter=764 cells_after_filter=717 truncated=false bounds=51.4826,-0.1878,51.5498,-0.0708 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.5 json_ms=0.4 total_ms=2.9 -2026-04-04T17:52:08.735568Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=267143 filters=1 travel=0 total=267143 filters_raw="Listing status:Historical sale|For sale|For rent" ms=7.7 -2026-04-04T17:52:11.068594Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=267143 parallel=true cells_before_filter=764 cells_after_filter=717 truncated=false bounds=51.4826,-0.1878,51.5498,-0.0708 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=2.5 json_ms=0.6 total_ms=3.1 -2026-04-04T17:52:12.668067Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=905315 filters=1 travel=0 total=905315 filters_raw="Listing status:Historical sale|For sale|For rent" ms=26.5 -2026-04-04T17:52:14.001393Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=580 cells_after_filter=457 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.9 json_ms=0.4 total_ms=2.3 -2026-04-04T17:52:14.335417Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=199182 filters=1 travel=0 total=199182 filters_raw="Listing status:Historical sale|For sale|For rent" ms=5.8 -2026-04-04T17:52:25.878764Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=580 cells_after_filter=457 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.7 json_ms=0.4 total_ms=2.1 -2026-04-04T17:52:28.714719Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=580 cells_after_filter=457 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=2.0 json_ms=0.4 total_ms=2.3 -2026-04-04T17:52:31.103390Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=127926 parallel=true cells_before_filter=456 cells_after_filter=439 truncated=false bounds=51.5036,-0.1614,51.5545,-0.0728 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.3 total_ms=1.9 -2026-04-04T17:52:31.360567Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=127926 filters=1 travel=0 total=127926 filters_raw="Listing status:Historical sale|For sale|For rent" ms=3.8 -2026-04-04T17:59:15.541227Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T17:59:15.541757Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T17:59:15.877270Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=127926 parallel=true cells_before_filter=456 cells_after_filter=438 truncated=false bounds=51.5037,-0.1614,51.5545,-0.0728 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.2 total_ms=1.7 -2026-04-04T17:59:16.096233Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=127926 filters=1 travel=0 total=127926 filters_raw="Listing status:Historical sale|For sale|For rent" ms=3.7 -2026-04-04T17:59:20.695819Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=127926 parallel=true cells_before_filter=456 cells_after_filter=438 truncated=false bounds=51.5037,-0.1614,51.5545,-0.0728 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.4 json_ms=0.3 total_ms=1.7 -2026-04-04T17:59:22.856529Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=282369 parallel=true cells_before_filter=920 cells_after_filter=895 truncated=false bounds=51.4930,-0.1818,51.5685,-0.0502 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=2.8 json_ms=0.7 total_ms=3.5 -2026-04-04T17:59:23.113378Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=282369 filters=1 travel=0 total=282369 filters_raw="Listing status:Historical sale|For sale|For rent" ms=8.4 -2026-04-04T17:59:33.849596Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=2768658 parallel=true cells_before_filter=4398 cells_after_filter=4390 truncated=false bounds=51.3474,-0.4950,51.8318,0.3504 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=18.5 json_ms=3.5 total_ms=22.0 -2026-04-04T17:59:34.622226Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=6211194 parallel=true cells_before_filter=1135 cells_after_filter=1135 truncated=false bounds=50.9262,-1.3956,52.5806,1.5025 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=35.9 json_ms=0.8 total_ms=36.8 -2026-04-04T17:59:35.085236Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=6211194 filters=1 travel=0 total=6211194 filters_raw="Listing status:Historical sale|For sale|For rent" ms=193.9 -2026-04-04T17:59:36.396469Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=86194e9b7ffffff resolution=6 total_count=1098 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" ms=0.5 -2026-04-04T17:59:36.773954Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=5451197 parallel=true cells_before_filter=874 cells_after_filter=874 truncated=false bounds=50.9262,-0.9915,52.5806,1.0984 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=27.2 json_ms=0.7 total_ms=28.0 -2026-04-04T17:59:37.142991Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=5451197 filters=1 travel=0 total=5451197 filters_raw="Listing status:Historical sale|For sale|For rent" ms=156.9 -2026-04-04T17:59:39.269152Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=6088960 parallel=true cells_before_filter=6934 cells_after_filter=6934 truncated=false bounds=50.9441,-1.3649,52.5634,1.4717 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=29.7 json_ms=3.0 total_ms=32.8 -2026-04-04T17:59:39.655123Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=6088960 filters=1 travel=0 total=6088960 filters_raw="Listing status:Historical sale|For sale|For rent" ms=169.7 -2026-04-04T17:59:41.910149Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=10747863 parallel=true cells_before_filter=2393 cells_after_filter=2393 truncated=false bounds=50.4628,-2.6360,53.2683,2.2922 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=0 travel_entries=0 grid_ms=0.2 agg_ms=73.4 json_ms=1.0 total_ms=74.7 -2026-04-04T17:59:42.405417Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10747863 filters=1 travel=0 total=10747863 filters_raw="Listing status:Historical sale|For sale|For rent" ms=330.0 -2026-04-04T17:59:42.950391Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=6563925 parallel=true cells_before_filter=1239 cells_after_filter=1239 truncated=false bounds=50.9045,-1.6593,52.6105,1.3295 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=22.3 json_ms=0.5 total_ms=23.0 -2026-04-04T17:59:43.513297Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4732864 parallel=true cells_before_filter=3529 cells_after_filter=3529 truncated=false bounds=51.1470,-1.1192,52.2425,0.7973 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=17.7 json_ms=1.6 total_ms=19.3 -2026-04-04T17:59:43.881130Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=4732864 filters=1 travel=0 total=4732864 filters_raw="Listing status:Historical sale|For sale|For rent" ms=130.5 -2026-04-04T17:59:44.506508Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3704415 parallel=true cells_before_filter=1794 cells_after_filter=1794 truncated=false bounds=51.2788,-0.8243,52.0402,0.5065 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=15.6 json_ms=0.8 total_ms=16.5 -2026-04-04T17:59:44.842395Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3704415 filters=1 travel=0 total=3704415 filters_raw="Listing status:Historical sale|For sale|For rent" ms=101.7 -2026-04-04T17:59:47.523197Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3704415 parallel=true cells_before_filter=1794 cells_after_filter=1794 truncated=false bounds=51.2788,-0.8243,52.0402,0.5065 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=16.5 json_ms=1.5 total_ms=18.0 -2026-04-04T17:59:50.166227Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3602016 parallel=true cells_before_filter=1759 cells_after_filter=1759 truncated=false bounds=51.2950,-0.6896,52.0561,0.6412 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=15.9 json_ms=1.2 total_ms=17.2 -2026-04-04T17:59:50.512414Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3602016 filters=1 travel=0 total=3602016 filters_raw="Listing status:Historical sale|For sale|For rent" ms=102.7 -2026-04-04T17:59:52.795095Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=48877 parallel=false cells_before_filter=450 cells_after_filter=377 truncated=false bounds=51.6499,-0.0772,51.7102,0.0282 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.8 json_ms=0.4 total_ms=2.2 -2026-04-04T17:59:53.098866Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=48877 filters=1 travel=0 total=48877 filters_raw="Listing status:Historical sale|For sale|For rent" ms=1.6 -2026-04-04T17:59:54.371508Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=307 postcodes_after_filter=144 filtered_out=163 truncated=false bounds=51.672122,-0.041819,51.681388,-0.025617 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=1 travel_entries=0 agg_ms=0.4 json_ms=0.4 total_ms=0.8 -2026-04-04T17:59:54.545340Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=307 postcodes_after_filter=147 filtered_out=160 truncated=false bounds=51.672062,-0.041916,51.681467,-0.025470 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=1 travel_entries=0 agg_ms=0.6 json_ms=0.4 total_ms=1.1 -2026-04-04T17:59:54.805768Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=5169 filters=1 travel=0 total=5169 filters_raw="Listing status:Historical sale|For sale|For rent" ms=0.2 -2026-04-04T17:59:55.424629Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=112 postcodes_after_filter=25 filtered_out=87 truncated=false bounds=51.675106,-0.037068,51.677521,-0.032845 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=1 travel_entries=0 agg_ms=0.2 json_ms=0.1 total_ms=0.3 -2026-04-04T17:59:55.677260Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1843 filters=1 travel=0 total=1843 filters_raw="Listing status:Historical sale|For sale|For rent" ms=0.1 -2026-04-04T17:59:56.342774Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=112 postcodes_after_filter=12 filtered_out=100 truncated=false bounds=51.675683,-0.036147,51.676772,-0.034244 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=1 travel_entries=0 agg_ms=0.2 json_ms=0.1 total_ms=0.2 -2026-04-04T17:59:56.590966Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1843 filters=1 travel=0 total=1843 filters_raw="Listing status:Historical sale|For sale|For rent" ms=0.1 -2026-04-04T18:03:26.287698Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T18:03:26.310730Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T18:03:26.317881Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T18:03:26.363818Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T18:03:26.784277Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=520 cells_after_filter=420 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=5 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.2 total_ms=1.7 -2026-04-04T18:03:26.805224Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=112 postcodes_after_filter=11 filtered_out=101 truncated=false bounds=51.675640,-0.036179,51.676760,-0.034221 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=0 travel_entries=0 agg_ms=0.2 json_ms=0.1 total_ms=0.3 -2026-04-04T18:03:26.996715Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=199182 filters=5 travel=0 total=7158 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" ms=1.3 -2026-04-04T18:03:27.016443Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1843 filters=1 travel=0 total=1843 filters_raw="Listing status:Historical sale|For sale|For rent" ms=0.1 -2026-04-04T18:04:01.598855Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=520 cells_after_filter=420 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=5 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.2 total_ms=1.8 -2026-04-04T18:04:01.634761Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=112 postcodes_after_filter=11 filtered_out=101 truncated=false bounds=51.675640,-0.036179,51.676760,-0.034221 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=0 travel_entries=0 agg_ms=0.2 json_ms=0.0 total_ms=0.3 -2026-04-04T18:04:01.842193Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=199182 filters=5 travel=0 total=7158 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" ms=1.6 -2026-04-04T18:04:01.870993Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1843 filters=1 travel=0 total=1843 filters_raw="Listing status:Historical sale|For sale|For rent" ms=0.1 -2026-04-04T18:04:09.995591Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=112 postcodes_after_filter=11 filtered_out=101 truncated=false bounds=51.675640,-0.036179,51.676760,-0.034221 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=0 travel_entries=0 agg_ms=0.2 json_ms=0.0 total_ms=0.2 -2026-04-04T18:04:10.034451Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=520 cells_after_filter=420 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=5 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.3 total_ms=1.8 -2026-04-04T18:04:10.244143Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1843 filters=1 travel=0 total=1843 filters_raw="Listing status:Historical sale|For sale|For rent" ms=0.1 -2026-04-04T18:04:10.259598Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=199182 filters=5 travel=0 total=7158 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" ms=1.1 -2026-04-04T18:04:17.017893Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=112 postcodes_after_filter=11 filtered_out=101 truncated=false bounds=51.675640,-0.036179,51.676760,-0.034221 filters=1 filters_raw="Listing status:Historical sale|For sale|For rent" fields=0 travel_entries=0 agg_ms=0.3 json_ms=0.1 total_ms=0.4 -2026-04-04T18:04:17.031082Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=199182 parallel=true cells_before_filter=520 cells_after_filter=420 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=5 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.4 json_ms=0.2 total_ms=1.6 -2026-04-04T18:04:17.269932Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1843 filters=1 travel=0 total=1843 filters_raw="Listing status:Historical sale|For sale|For rent" ms=0.1 -2026-04-04T18:04:17.285691Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=199182 filters=5 travel=0 total=7158 filters_raw="Listing status:Historical sale|For sale|For rent;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Leasehold/Freehold:Freehold|Leasehold;;Asking price:1:inf;;Asking price per sqm:0:49347.58" ms=1.4 -2026-04-04T18:06:34.470364Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T18:06:34.470528Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet, /app/data-scraped/online_listings_buy.parquet, /app/data-scraped/online_listings_rent.parquet -2026-04-04T18:06:34.470540Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-04-04T18:06:34.590502Z INFO property_map_server::data::property: Postcode features loaded rows=1262364 -2026-04-04T18:06:34.590511Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-04-04T18:06:36.790692Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203393 -2026-04-04T18:06:36.790703Z INFO property_map_server::data::property: Loading buy listings from "/app/data-scraped/online_listings_buy.parquet" -2026-04-04T18:06:37.182048Z INFO property_map_server::data::property: buy listings joined rows=1060501 -2026-04-04T18:06:37.182066Z INFO property_map_server::data::property: Loading rent listings from "/app/data-scraped/online_listings_rent.parquet" -2026-04-04T18:06:37.289399Z INFO property_map_server::data::property: rent listings joined rows=266585 -2026-04-04T18:06:37.289409Z INFO property_map_server::data::property: Concatenating all data sources -2026-04-04T18:06:50.790710Z INFO property_map_server::data::property: All data sources combined properties=15203393 buy_listings=1060501 rent_listings=266585 total=16530479 -2026-04-04T18:12:36.704296Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T18:13:12.473174Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T18:13:42.494116Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T18:13:59.841398Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T18:58:25.950686Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T18:58:25.950839Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-04-04T18:58:25.950845Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-04-04T18:58:26.022537Z INFO property_map_server::data::property: Postcode features loaded rows=1262364 -2026-04-04T18:58:26.022548Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-04-04T18:58:28.362018Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203393 -2026-04-04T18:58:28.362056Z INFO property_map_server::data::property: Feature columns from config numeric=54 enums=7 total=61 -2026-04-04T18:58:29.258036Z INFO property_map_server::data::property: Combined data selected rows=15203393 -2026-04-04T18:58:29.411124Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-04-04T18:58:29.740495Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-04-04T18:58:31.008391Z INFO property_map_server::data::property: Extracting string columns -2026-04-04T18:58:32.331403Z INFO property_map_server::data::property: Building enum features -2026-04-04T18:58:33.634312Z INFO property_map_server::data::property: Extracting renovation history -2026-04-04T18:58:36.314390Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829784 -2026-04-04T18:58:36.314399Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-04-04T18:58:37.165783Z INFO property_map_server::data::property: Building interned strings -2026-04-04T18:58:42.517924Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-04-04T18:58:44.809406Z INFO property_map_server::data::property: Data loading complete -2026-04-04T18:58:45.707780Z INFO property_map_server: Property data loaded rows=15203393 features=61 enums=7 -2026-04-04T18:58:45.707789Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-04-04T18:58:45.799140Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-04-04T18:58:45.799148Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-04-04T18:58:46.168573Z INFO property_map_server::data::property: H3 precomputation complete (15203393 cells) -2026-04-04T18:58:46.168598Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-04-04T18:58:46.168603Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-04-04T18:58:46.186973Z INFO property_map_server::data::poi: Loaded 550611 POIs -2026-04-04T18:58:46.274891Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-04-04T18:58:46.275351Z INFO property_map_server::data::poi: POI data loading complete. -2026-04-04T18:58:46.304620Z INFO property_map_server: POI data loaded pois=550611 -2026-04-04T18:58:46.304630Z INFO property_map_server: Building POI spatial grid index -2026-04-04T18:58:46.309434Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-04-04T18:58:46.309449Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-04-04T18:58:46.309898Z INFO property_map_server::data::places: Loaded 3474 places -2026-04-04T18:58:46.310655Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-04-04T18:58:46.310713Z INFO property_map_server: Place data loaded places=3474 -2026-04-04T18:58:46.310722Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-04-04T18:58:46.310726Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-04-04T18:58:46.311535Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-04-04T18:58:53.123995Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-04-04T18:58:53.357586Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-04-04T18:58:53.499271Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-04-04T18:58:53.499331Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-04-04T18:58:53.502003Z INFO property_map_server: PMTiles loaded successfully -2026-04-04T18:58:53.536536Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-04-04T18:58:53.562184Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-04-04T18:58:53.562329Z INFO property_map_server: Precomputed features response groups=8 -2026-04-04T18:58:53.562345Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-04-04T18:58:53.622270Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-04-04T18:58:53.625633Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-04-04T18:58:53.628760Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-04-04T18:58:53.632492Z INFO property_map_server::pocketbase: Created PocketBase collection: location_logs -2026-04-04T18:58:53.679393Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-04-04T18:58:53.682963Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-04-04T18:58:53.682996Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-04-04T18:58:53.683012Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-04-04T18:58:53.684265Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2753 -2026-04-04T18:58:53.685400Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=2753 -2026-04-04T18:58:53.686635Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=2753 -2026-04-04T18:58:53.687682Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=2752 -2026-04-04T18:58:53.687700Z INFO property_map_server: Travel time store loaded modes=4 -2026-04-04T18:58:53.687785Z INFO property_map_server: Precomputed AI filters system prompt -2026-04-04T18:58:58.030005Z INFO property_map_server: All memory pages locked (mlockall) -2026-04-04T18:58:58.030041Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-04-04T18:58:59.823013Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T18:58:59.879273Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T18:59:00.090793Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=163447 parallel=true cells_before_filter=563 cells_after_filter=445 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.7 json_ms=0.3 total_ms=7.0 -2026-04-04T19:07:08.593720Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T19:07:08.594267Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T19:09:28.490027Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T19:09:28.490252Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T19:09:28.807330Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=163447 parallel=true cells_before_filter=563 cells_after_filter=445 truncated=false bounds=51.4896,-0.1743,51.5404,-0.0857 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=3.7 json_ms=0.2 total_ms=4.0 -2026-04-04T19:09:30.432238Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=305945 parallel=true cells_before_filter=1029 cells_after_filter=908 truncated=false bounds=51.4761,-0.1947,51.5509,-0.0644 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.2 json_ms=0.7 total_ms=2.9 -2026-04-04T19:09:30.972518Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=87742 parallel=true cells_before_filter=321 cells_after_filter=275 truncated=false bounds=51.4962,-0.1642,51.5353,-0.0962 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.8 json_ms=0.1 total_ms=0.9 -2026-04-04T19:09:33.346023Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=87742 parallel=true cells_before_filter=321 cells_after_filter=275 truncated=false bounds=51.4962,-0.1642,51.5353,-0.0962 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.2 total_ms=1.3 -2026-04-04T19:09:34.538255Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=163447 parallel=true cells_before_filter=563 cells_after_filter=465 truncated=false bounds=51.4895,-0.1757,51.5420,-0.0842 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.9 json_ms=0.4 total_ms=2.3 -2026-04-04T19:09:35.572199Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=1606 postcodes_after_filter=925 filtered_out=681 truncated=false bounds=51.506447,-0.142031,51.520817,-0.116995 filters=0 filters_raw="-" fields=1 travel_entries=0 agg_ms=1.4 json_ms=2.2 total_ms=3.6 -2026-04-04T19:09:36.874859Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=668 postcodes_after_filter=210 filtered_out=458 truncated=false bounds=51.510893,-0.135029,51.516555,-0.125165 filters=0 filters_raw="-" fields=1 travel_entries=0 agg_ms=0.9 json_ms=0.5 total_ms=1.4 -2026-04-04T19:09:37.662705Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=60356 parallel=true cells_before_filter=232 cells_after_filter=189 truncated=false bounds=51.4973,-0.1564,51.5296,-0.1002 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.2 total_ms=1.2 -2026-04-04T19:09:38.897200Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=522269 parallel=true cells_before_filter=1914 cells_after_filter=1793 truncated=false bounds=51.4585,-0.2175,51.5667,-0.0289 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=5.1 json_ms=1.4 total_ms=6.5 -2026-04-04T19:09:39.706765Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=750424 parallel=true cells_before_filter=3022 cells_after_filter=2970 truncated=false bounds=51.4430,-0.2468,51.5859,0.0022 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=6.4 json_ms=2.8 total_ms=9.2 -2026-04-04T19:09:41.420321Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=1592747 parallel=true cells_before_filter=8727 cells_after_filter=8611 truncated=false bounds=51.3838,-0.3367,51.6434,0.1155 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=16.8 json_ms=9.7 total_ms=26.5 -2026-04-04T19:09:43.653419Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=846882 parallel=true cells_before_filter=5922 cells_after_filter=5845 truncated=false bounds=51.5121,-0.2506,51.7709,0.2016 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=9.0 json_ms=5.6 total_ms=14.6 -2026-04-04T19:10:09.335765Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T19:10:09.337693Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T19:10:31.643735Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T19:10:31.644866Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T19:10:32.573892Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=18876 parallel=false cells_before_filter=101 cells_after_filter=57 truncated=false bounds=51.5095,-0.1429,51.5205,-0.1171 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.5 json_ms=0.1 total_ms=0.6 -2026-04-04T19:10:34.180904Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=18876 parallel=false cells_before_filter=101 cells_after_filter=80 truncated=false bounds=51.5048,-0.1429,51.5252,-0.1171 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.5 json_ms=0.1 total_ms=0.6 -2026-04-04T19:10:35.518428Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=18876 parallel=false cells_before_filter=101 cells_after_filter=80 truncated=false bounds=51.5051,-0.1429,51.5249,-0.1171 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.4 json_ms=0.1 total_ms=0.5 -2026-04-04T19:12:24.311006Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=18876 parallel=false cells_before_filter=101 cells_after_filter=67 truncated=false bounds=51.5080,-0.1429,51.5220,-0.1171 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.3 json_ms=0.1 total_ms=0.4 -2026-04-04T19:12:25.258385Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=18876 parallel=false cells_before_filter=101 cells_after_filter=55 truncated=false bounds=51.5099,-0.1429,51.5201,-0.1171 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.4 json_ms=0.0 total_ms=0.4 -2026-04-04T19:12:28.774542Z INFO property_map_server::routes::ai_filters: POST /api/ai-filters query=Best ex-council houses under 200k user_id=pyja9yzzek267px -2026-04-04T19:12:30.706074Z INFO property_map_server::routes::ai_filters: AI filter match count match_count=35818 round=0 -2026-04-04T19:12:30.967720Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=18876 parallel=false cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.5099,-0.1429,51.5201,-0.1171 filters=3 filters_raw="Estimated current price:23036.77734375:200000;;Former council house:Yes;;Property type:Detached|Semi-Detached|Terraced" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.1 json_ms=0.0 total_ms=0.1 -2026-04-04T19:12:31.213160Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=18876 filters=3 travel=0 total=0 filters_raw="Estimated current price:23036.77734375:200000;;Former council house:Yes;;Property type:Detached|Semi-Detached|Terraced" ms=0.2 -2026-04-04T19:12:33.333012Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=18876 parallel=false cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.5076,-0.1429,51.5224,-0.1171 filters=3 filters_raw="Estimated current price:23036.77734375:200000;;Former council house:Yes;;Property type:Detached|Semi-Detached|Terraced" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.1 json_ms=0.0 total_ms=0.1 -2026-04-04T19:12:33.575664Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=18876 filters=3 travel=0 total=0 filters_raw="Estimated current price:23036.77734375:200000;;Former council house:Yes;;Property type:Detached|Semi-Detached|Terraced" ms=0.2 -2026-04-04T19:12:35.864410Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=264742 parallel=true cells_before_filter=0 cells_after_filter=0 truncated=false bounds=51.4820,-0.1724,51.5614,-0.0333 filters=3 filters_raw="Estimated current price:23036.77734375:200000;;Former council house:Yes;;Property type:Detached|Semi-Detached|Terraced" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.8 json_ms=0.0 total_ms=0.8 -2026-04-04T19:12:36.356585Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=473845 parallel=true cells_before_filter=2 cells_after_filter=2 truncated=false bounds=51.4711,-0.2080,51.5780,-0.0205 filters=3 filters_raw="Estimated current price:23036.77734375:200000;;Former council house:Yes;;Property type:Detached|Semi-Detached|Terraced" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.0 total_ms=1.3 -2026-04-04T19:12:36.891556Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=701500 parallel=true cells_before_filter=4 cells_after_filter=4 truncated=false bounds=51.4642,-0.2401,51.6017,0.0010 filters=3 filters_raw="Estimated current price:23036.77734375:200000;;Former council house:Yes;;Property type:Detached|Semi-Detached|Terraced" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.9 json_ms=0.0 total_ms=1.9 -2026-04-04T19:12:38.050425Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=2671464 parallel=true cells_before_filter=25 cells_after_filter=25 truncated=false bounds=51.3063,-0.6784,51.8466,0.2698 filters=3 filters_raw="Estimated current price:23036.77734375:200000;;Former council house:Yes;;Property type:Detached|Semi-Detached|Terraced" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.3 json_ms=0.0 total_ms=6.3 -2026-04-04T19:12:38.301989Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=2671464 filters=3 travel=0 total=34 filters_raw="Estimated current price:23036.77734375:200000;;Former council house:Yes;;Property type:Detached|Semi-Detached|Terraced" ms=23.7 -2026-04-04T19:12:40.047478Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=6800296 parallel=true cells_before_filter=418 cells_after_filter=418 truncated=false bounds=50.8261,-1.9170,52.6475,1.2907 filters=3 filters_raw="Estimated current price:23036.77734375:200000;;Former council house:Yes;;Property type:Detached|Semi-Detached|Terraced" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=32.7 json_ms=0.2 total_ms=33.0 -2026-04-04T19:12:40.375886Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=6800296 filters=3 travel=0 total=4276 filters_raw="Estimated current price:23036.77734375:200000;;Former council house:Yes;;Property type:Detached|Semi-Detached|Terraced" ms=82.2 -2026-04-04T19:12:40.860846Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=10312897 parallel=true cells_before_filter=338 cells_after_filter=338 truncated=false bounds=50.3952,-3.2077,53.3335,1.9831 filters=3 filters_raw="Estimated current price:23036.77734375:200000;;Former council house:Yes;;Property type:Detached|Semi-Detached|Terraced" fields=0 travel_entries=0 grid_ms=0.3 agg_ms=45.4 json_ms=0.2 total_ms=45.9 -2026-04-04T19:12:41.187128Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10312897 filters=3 travel=0 total=14773 filters_raw="Estimated current price:23036.77734375:200000;;Former council house:Yes;;Property type:Detached|Semi-Detached|Terraced" ms=125.3 -2026-04-04T19:12:41.826819Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=13619907 parallel=true cells_before_filter=475 cells_after_filter=475 truncated=false bounds=49.7272,-5.0533,54.3143,3.0844 filters=3 filters_raw="Estimated current price:23036.77734375:200000;;Former council house:Yes;;Property type:Detached|Semi-Detached|Terraced" fields=0 travel_entries=0 grid_ms=0.5 agg_ms=60.0 json_ms=0.2 total_ms=60.7 -2026-04-04T19:12:42.179520Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=13619907 filters=3 travel=0 total=28736 filters_raw="Estimated current price:23036.77734375:200000;;Former council house:Yes;;Property type:Detached|Semi-Detached|Terraced" ms=167.9 -2026-04-04T19:12:43.998301Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=13616809 parallel=true cells_before_filter=482 cells_after_filter=482 truncated=false bounds=49.9223,-4.5757,54.4903,3.5619 filters=3 filters_raw="Estimated current price:23036.77734375:200000;;Former council house:Yes;;Property type:Detached|Semi-Detached|Terraced" fields=0 travel_entries=0 grid_ms=0.4 agg_ms=63.8 json_ms=0.2 total_ms=64.4 -2026-04-04T19:12:44.348104Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=13616809 filters=3 travel=0 total=28757 filters_raw="Estimated current price:23036.77734375:200000;;Former council house:Yes;;Property type:Detached|Semi-Detached|Terraced" ms=166.7 -2026-04-04T19:17:54.103760Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=846882 parallel=true cells_before_filter=5922 cells_after_filter=5845 truncated=false bounds=51.5121,-0.2506,51.7709,0.2016 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=8.7 json_ms=5.8 total_ms=14.4 -2026-04-04T19:17:55.724332Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3151293 parallel=true cells_before_filter=1629 cells_after_filter=1629 truncated=false bounds=51.3279,-0.5602,52.0611,0.7222 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=14.5 json_ms=1.3 total_ms=15.8 -2026-04-04T19:17:57.502505Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=6131735 parallel=true cells_before_filter=1183 cells_after_filter=1183 truncated=false bounds=50.5815,-1.3577,52.5394,2.0576 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=38.8 json_ms=0.9 total_ms=39.8 -2026-04-04T19:17:58.444531Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=11000920 parallel=true cells_before_filter=2642 cells_after_filter=2642 truncated=false bounds=49.5744,-2.7201,53.5676,4.2517 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.3 agg_ms=58.2 json_ms=2.0 total_ms=60.5 -2026-04-04T19:18:00.646435Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14459864 parallel=true cells_before_filter=683 cells_after_filter=683 truncated=false bounds=47.7865,-7.4288,55.7459,6.5636 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=1.0 agg_ms=88.2 json_ms=0.6 total_ms=89.8 -2026-04-04T19:18:01.613204Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=14031672 parallel=true cells_before_filter=4007 cells_after_filter=4007 truncated=false bounds=49.3349,-5.3139,54.8230,4.3842 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.7 agg_ms=95.9 json_ms=3.5 total_ms=100.1 -2026-04-04T19:18:02.489569Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=5896958 parallel=true cells_before_filter=1212 cells_after_filter=1212 truncated=false bounds=51.1805,-1.7929,52.8495,1.1478 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=22.1 json_ms=0.9 total_ms=23.1 -2026-04-04T19:18:03.645638Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=6189883 parallel=true cells_before_filter=1165 cells_after_filter=1165 truncated=false bounds=50.7464,-1.6539,52.4312,1.2868 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=22.3 json_ms=0.9 total_ms=23.3 -2026-04-04T19:18:05.647790Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=6189883 parallel=true cells_before_filter=1165 cells_after_filter=1165 truncated=false bounds=50.7464,-1.6539,52.4312,1.2868 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=28.1 json_ms=0.8 total_ms=29.0 -2026-04-04T19:18:06.970953Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=11654088 parallel=true cells_before_filter=2748 cells_after_filter=2748 truncated=false bounds=50.2448,-2.6527,53.7960,3.6087 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.4 agg_ms=60.5 json_ms=1.9 total_ms=62.7 -2026-04-04T19:18:08.264331Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13319995 parallel=true cells_before_filter=3393 cells_after_filter=3393 truncated=false bounds=48.9280,-3.7156,54.2031,5.4991 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.5 agg_ms=78.1 json_ms=2.6 total_ms=81.2 -2026-04-04T19:18:09.441619Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13466452 parallel=true cells_before_filter=3490 cells_after_filter=3490 truncated=false bounds=48.8970,-4.2559,54.1755,4.9588 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.5 agg_ms=73.4 json_ms=2.5 total_ms=76.4 -2026-04-04T19:18:10.998471Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=14362638 parallel=true cells_before_filter=4102 cells_after_filter=4102 truncated=false bounds=49.9216,-5.2151,55.0871,3.9996 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.5 agg_ms=95.5 json_ms=3.4 total_ms=99.4 -2026-04-04T19:18:11.248970Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=14364425 parallel=true cells_before_filter=4103 cells_after_filter=4103 truncated=false bounds=49.9187,-5.2285,55.0845,3.9862 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.5 agg_ms=95.1 json_ms=3.4 total_ms=99.0 -2026-04-04T19:18:12.462881Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=14046788 parallel=true cells_before_filter=4018 cells_after_filter=4018 truncated=false bounds=50.6881,-5.3356,55.7680,3.8792 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.7 agg_ms=72.1 json_ms=2.7 total_ms=75.5 -2026-04-04T19:18:12.795860Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13826657 parallel=true cells_before_filter=3965 cells_after_filter=3965 truncated=false bounds=50.7587,-5.2999,55.8307,3.9149 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.5 agg_ms=77.8 json_ms=2.8 total_ms=81.1 -2026-04-04T19:18:14.615357Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13598177 parallel=true cells_before_filter=3720 cells_after_filter=3720 truncated=false bounds=49.1784,-4.6682,54.4260,4.5465 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=72.3 json_ms=3.1 total_ms=76.1 -2026-04-04T19:18:22.211050Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13598177 parallel=true cells_before_filter=3720 cells_after_filter=3720 truncated=false bounds=49.1784,-4.6682,54.4260,4.5465 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.5 agg_ms=75.4 json_ms=3.0 total_ms=78.9 -2026-04-04T19:18:26.281216Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=5498670 parallel=true cells_before_filter=5780 cells_after_filter=5780 truncated=false bounds=50.7941,-1.2035,52.2935,1.4109 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=25.8 json_ms=4.0 total_ms=29.9 -2026-04-04T19:18:27.229769Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3235129 parallel=true cells_before_filter=1652 cells_after_filter=1652 truncated=false bounds=51.0899,-0.5985,51.8285,0.6869 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=14.9 json_ms=1.2 total_ms=16.1 -2026-04-04T19:18:28.522374Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3938637 parallel=true cells_before_filter=3101 cells_after_filter=3101 truncated=false bounds=50.9700,-0.7230,52.0193,1.1045 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=17.7 json_ms=2.0 total_ms=19.8 -2026-04-04T19:18:29.937282Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3938637 parallel=true cells_before_filter=3101 cells_after_filter=3101 truncated=false bounds=50.9700,-0.7230,52.0193,1.1045 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=18.0 json_ms=2.4 total_ms=20.5 -2026-04-04T19:18:31.148003Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3938637 parallel=true cells_before_filter=3101 cells_after_filter=3101 truncated=false bounds=50.9700,-0.7230,52.0193,1.1045 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=8.7 json_ms=1.7 total_ms=10.5 -2026-04-04T19:18:34.274469Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3938637 parallel=true cells_before_filter=3101 cells_after_filter=3101 truncated=false bounds=50.9700,-0.7230,52.0193,1.1045 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=16.4 json_ms=2.1 total_ms=18.5 -2026-04-04T19:18:36.314875Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3938637 parallel=true cells_before_filter=3101 cells_after_filter=3101 truncated=false bounds=50.9700,-0.7230,52.0193,1.1045 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=9.6 json_ms=1.4 total_ms=11.1 -2026-04-04T19:27:53.245205Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T19:27:53.246199Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T19:27:53.713571Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=13109445 parallel=true cells_before_filter=430 cells_after_filter=430 truncated=false bounds=50.5312,-4.5849,53.9337,3.5711 filters=3 filters_raw="Estimated current price:23036.77734375:200000;;Former council house:Yes;;Property type:Detached|Semi-Detached|Terraced" fields=0 travel_entries=0 grid_ms=0.3 agg_ms=57.6 json_ms=0.2 total_ms=58.2 -2026-04-04T19:27:54.070663Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=13109445 filters=3 travel=0 total=27503 filters_raw="Estimated current price:23036.77734375:200000;;Former council house:Yes;;Property type:Detached|Semi-Detached|Terraced" ms=168.9 -2026-04-04T21:15:02.264425Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T21:15:02.265558Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T21:15:02.624018Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4035864 parallel=true cells_before_filter=3246 cells_after_filter=3246 truncated=false bounds=50.9572,-0.7449,52.0317,1.1265 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=10.3 json_ms=1.9 total_ms=12.2 -2026-04-04T21:15:06.357168Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4035864 parallel=true cells_before_filter=3246 cells_after_filter=3246 truncated=false bounds=50.9572,-0.7449,52.0317,1.1265 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=18.0 json_ms=2.8 total_ms=20.9 -2026-04-04T21:15:08.234117Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7328700 parallel=true cells_before_filter=1598 cells_after_filter=1598 truncated=false bounds=50.2800,-1.8107,52.7988,2.5816 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.2 agg_ms=44.5 json_ms=1.5 total_ms=46.2 -2026-04-04T21:15:08.973679Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4844845 parallel=true cells_before_filter=4829 cells_after_filter=4829 truncated=false bounds=50.9058,-0.9537,52.2612,1.4115 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=36.1 json_ms=4.0 total_ms=40.1 -2026-04-04T21:15:10.167709Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4844845 parallel=true cells_before_filter=4829 cells_after_filter=4829 truncated=false bounds=50.9058,-0.9537,52.2612,1.4115 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=26.6 json_ms=2.2 total_ms=28.9 -2026-04-04T21:15:11.217257Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4844845 parallel=true cells_before_filter=4829 cells_after_filter=4829 truncated=false bounds=50.9058,-0.9537,52.2612,1.4115 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=35.0 json_ms=2.2 total_ms=37.3 -2026-04-04T21:15:11.483301Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=4844845 filters=1 travel=0 total=4844845 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=51.0 -2026-04-04T21:15:13.605750Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4844845 parallel=true cells_before_filter=4829 cells_after_filter=4829 truncated=false bounds=50.9058,-0.9537,52.2612,1.4115 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=35.8 json_ms=4.1 total_ms=40.0 -2026-04-04T21:15:14.878982Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4844845 parallel=true cells_before_filter=4829 cells_after_filter=4829 truncated=false bounds=50.9058,-0.9537,52.2612,1.4115 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=36.0 json_ms=2.1 total_ms=38.3 -2026-04-04T21:15:15.506971Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4844845 parallel=true cells_before_filter=4829 cells_after_filter=4829 truncated=false bounds=50.9058,-0.9537,52.2612,1.4115 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=34.9 json_ms=4.0 total_ms=39.0 -2026-04-04T21:16:05.839673Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=2130219 parallel=true cells_before_filter=3951 cells_after_filter=3936 truncated=false bounds=51.3214,-0.2549,51.8002,0.5802 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=12.4 json_ms=3.9 total_ms=16.3 -2026-04-04T21:16:06.073443Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=2130219 filters=1 travel=0 total=2130219 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=18.0 -2026-04-04T21:16:07.804822Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=2130219 parallel=true cells_before_filter=3951 cells_after_filter=3936 truncated=false bounds=51.3214,-0.2549,51.8002,0.5802 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=7.8 json_ms=1.8 total_ms=9.7 -2026-04-04T21:16:08.934250Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194e68a5fffff resolution=8 total_count=801 filters=0 filters_raw="-" ms=0.5 -2026-04-04T21:16:09.330456Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1425363 parallel=true cells_before_filter=2870 cells_after_filter=2866 truncated=false bounds=51.3214,-0.1385,51.8002,0.4637 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=5.3 json_ms=1.7 total_ms=6.9 -2026-04-04T21:16:17.920627Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194e6133fffff resolution=8 total_count=1007 filters=0 filters_raw="-" ms=0.4 -2026-04-04T21:16:18.982200Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194e6847fffff resolution=8 total_count=983 filters=0 filters_raw="-" ms=0.6 -2026-04-04T21:16:19.599388Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194e69c9fffff resolution=8 total_count=1308 filters=0 filters_raw="-" ms=0.6 -2026-04-04T21:16:20.381134Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=2514759 parallel=true cells_before_filter=1387 cells_after_filter=1387 truncated=false bounds=51.1721,-0.2436,51.9682,0.7579 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=5.8 json_ms=0.8 total_ms=6.6 -2026-04-04T21:16:20.692754Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ad2effffff resolution=7 total_count=7392 filters=0 filters_raw="-" ms=2.7 -2026-04-04T21:17:31.050847Z INFO property_map_server::routes::ai_filters: POST /api/ai-filters query=Flats around good primary schools not too far from Manchester user_id=pyja9yzzek267px -2026-04-04T21:17:33.587477Z INFO property_map_server::routes::ai_filters: AI called tool function="search_destinations" round=0 tool_call=1 -2026-04-04T21:17:34.992473Z INFO property_map_server::routes::ai_filters: AI filter match count match_count=44148 round=1 -2026-04-04T21:17:35.034575Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.3 -2026-04-04T21:17:35.035913Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ad2effffff resolution=7 total_count=4492 filters=2 filters_raw="Good+ primary schools within 2km:2:49;;Property type:Flats/Maisonettes" ms=1.8 -2026-04-04T21:17:35.067913Z INFO property_map_server::routes::travel_destinations: GET /api/travel-destinations mode="transit" results=2752 ms=1.3 -2026-04-04T21:17:35.315202Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1336988 parallel=true cells_before_filter=37 cells_after_filter=37 truncated=false bounds=53.0966,-2.7459,53.8589,-1.7444 filters=2 filters_raw="Good+ primary schools within 2km:2:49;;Property type:Flats/Maisonettes" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=6.4 json_ms=0.0 total_ms=6.5 -2026-04-04T21:17:35.579723Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1336988 filters=3 travel=1 total=44148 filters_raw="Good+ primary schools within 2km:2:49;;Property type:Flats/Maisonettes" ms=33.0 -2026-04-04T21:17:59.613602Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ad2effffff resolution=7 total_count=7392 filters=1 filters_raw="Good+ primary schools within 2km:2:49" ms=2.6 -2026-04-04T21:17:59.771297Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1336988 parallel=true cells_before_filter=41 cells_after_filter=41 truncated=false bounds=53.0966,-2.7459,53.8589,-1.7444 filters=1 filters_raw="Good+ primary schools within 2km:2:49" fields=0 travel_entries=1 grid_ms=0.0 agg_ms=4.7 json_ms=0.0 total_ms=4.8 -2026-04-04T21:18:00.034060Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1336988 parallel=true cells_before_filter=834 cells_after_filter=834 truncated=false bounds=53.0966,-2.7459,53.8589,-1.7444 filters=1 filters_raw="Good+ primary schools within 2km:2:49" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.2 json_ms=0.4 total_ms=6.7 -2026-04-04T21:18:00.283601Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1336988 filters=1 travel=0 total=1277693 filters_raw="Good+ primary schools within 2km:2:49" ms=5.8 -2026-04-04T21:18:01.574940Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ad2effffff resolution=7 total_count=7392 filters=0 filters_raw="-" ms=2.5 -2026-04-04T21:18:01.682923Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1336988 parallel=true cells_before_filter=1172 cells_after_filter=1172 truncated=false bounds=53.0966,-2.7459,53.8589,-1.7444 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=3.9 json_ms=0.6 total_ms=4.5 -2026-04-04T21:18:06.530263Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1336988 parallel=true cells_before_filter=1172 cells_after_filter=1172 truncated=false bounds=53.0966,-2.7459,53.8589,-1.7444 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=7.1 json_ms=0.8 total_ms=7.9 -2026-04-04T21:18:29.362901Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T21:18:29.367513Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T21:18:29.686683Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1826282 parallel=true cells_before_filter=1696 cells_after_filter=1696 truncated=false bounds=53.0885,-2.9542,53.8669,-1.5360 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=5.1 json_ms=0.8 total_ms=5.9 -2026-04-04T21:18:34.992978Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1826282 parallel=true cells_before_filter=1696 cells_after_filter=1696 truncated=false bounds=53.0885,-2.9542,53.8669,-1.5360 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=9.4 json_ms=1.4 total_ms=10.8 -2026-04-04T21:18:37.555732Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=212401 parallel=true cells_before_filter=2268 cells_after_filter=2236 truncated=false bounds=53.4767,-2.3506,53.6179,-2.0930 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=3.2 json_ms=1.8 total_ms=5.0 -2026-04-04T21:21:31.346209Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=212401 parallel=true cells_before_filter=2268 cells_after_filter=2236 truncated=false bounds=53.4767,-2.3506,53.6179,-2.0930 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.4 json_ms=1.1 total_ms=3.5 -2026-04-04T21:21:32.233775Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=891951b2cabffff resolution=9 total_count=110 filters=0 filters_raw="-" ms=0.3 -2026-04-04T21:21:32.605729Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=171338 parallel=true cells_before_filter=1758 cells_after_filter=1673 truncated=false bounds=53.4767,-2.3147,53.6179,-2.1289 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.6 json_ms=0.9 total_ms=3.5 -2026-04-04T21:21:38.513149Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=8919424dc1bffff resolution=9 total_count=153 filters=0 filters_raw="-" ms=0.3 -2026-04-04T21:21:40.994679Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=8919424da9bffff resolution=9 total_count=209 filters=0 filters_raw="-" ms=0.1 -2026-04-04T21:21:42.017604Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=8919424da17ffff resolution=9 total_count=86 filters=0 filters_raw="-" ms=0.1 -2026-04-04T21:21:42.980235Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=778383 parallel=true cells_before_filter=2695 cells_after_filter=2695 truncated=false bounds=53.3572,-2.5218,53.8559,-1.8645 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=4.1 json_ms=1.2 total_ms=5.4 -2026-04-04T21:21:44.159590Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=881951b75dfffff resolution=8 total_count=4177 filters=0 filters_raw="-" ms=1.3 -2026-04-04T21:21:45.138081Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=762091 parallel=true cells_before_filter=2726 cells_after_filter=2721 truncated=false bounds=53.2675,-2.4988,53.7674,-1.8415 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=3.8 json_ms=1.3 total_ms=5.1 -2026-04-04T21:21:47.457979Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=881951b627fffff resolution=8 total_count=871 filters=0 filters_raw="-" ms=0.4 -2026-04-04T21:23:16.650476Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=762091 parallel=true cells_before_filter=2726 cells_after_filter=2721 truncated=false bounds=53.2675,-2.4988,53.7674,-1.8415 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=6.2 json_ms=2.6 total_ms=8.8 -2026-04-04T21:23:17.018996Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=881951b627fffff resolution=8 total_count=871 filters=1 filters_raw="Leasehold/Freehold:Freehold|Leasehold" ms=0.3 -2026-04-04T21:23:17.175210Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=762091 parallel=true cells_before_filter=2726 cells_after_filter=2721 truncated=false bounds=53.2675,-2.4988,53.7674,-1.8415 filters=1 filters_raw="Leasehold/Freehold:Freehold|Leasehold" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=5.9 json_ms=2.2 total_ms=8.1 -2026-04-04T21:23:17.406892Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=762091 filters=1 travel=0 total=762072 filters_raw="Leasehold/Freehold:Freehold|Leasehold" ms=6.6 -2026-04-04T21:23:18.315814Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=762091 parallel=true cells_before_filter=2726 cells_after_filter=2721 truncated=false bounds=53.2675,-2.4988,53.7674,-1.8415 filters=1 filters_raw="Leasehold/Freehold:Freehold|Leasehold" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.0 json_ms=1.4 total_ms=7.4 -2026-04-04T21:23:18.887438Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=881951b627fffff resolution=8 total_count=449 filters=1 filters_raw="Leasehold/Freehold:Freehold" ms=0.2 -2026-04-04T21:23:19.026066Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=762091 parallel=true cells_before_filter=2699 cells_after_filter=2694 truncated=false bounds=53.2675,-2.4988,53.7674,-1.8415 filters=1 filters_raw="Leasehold/Freehold:Freehold" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=5.5 json_ms=1.3 total_ms=6.8 -2026-04-04T21:23:19.279450Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=762091 filters=1 travel=0 total=396227 filters_raw="Leasehold/Freehold:Freehold" ms=8.3 -2026-04-04T21:23:24.230721Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T21:23:24.232501Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T21:23:29.794131Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T21:23:29.794142Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T21:23:35.110692Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T21:23:35.110752Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T21:23:40.188053Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T21:23:40.188054Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T21:23:45.139219Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T21:23:45.139435Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T21:24:03.100735Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T21:24:03.101704Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T21:24:15.902912Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T21:24:15.902964Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T21:24:16.202086Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=994657 parallel=true cells_before_filter=3840 cells_after_filter=3832 truncated=false bounds=53.2609,-2.6381,53.7740,-1.7023 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.2 json_ms=1.9 total_ms=8.1 -2026-04-04T21:24:19.131858Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=994657 parallel=true cells_before_filter=3840 cells_after_filter=3832 truncated=false bounds=53.2609,-2.6381,53.7740,-1.7023 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=7.8 json_ms=1.7 total_ms=9.5 -2026-04-04T21:24:19.358775Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=994657 filters=1 travel=0 total=994657 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=8.0 -2026-04-04T21:24:21.428258Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=994657 parallel=true cells_before_filter=3840 cells_after_filter=3832 truncated=false bounds=53.2609,-2.6381,53.7740,-1.7023 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=9.7 json_ms=3.3 total_ms=13.1 -2026-04-04T21:24:22.589944Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=62512 parallel=true cells_before_filter=699 cells_after_filter=661 truncated=false bounds=53.4481,-2.1985,53.5157,-2.0754 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.4 json_ms=0.5 total_ms=1.9 -2026-04-04T21:24:22.851217Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=62512 filters=1 travel=0 total=62512 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.9 -2026-04-04T21:24:23.402508Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=490 postcodes_after_filter=348 filtered_out=142 truncated=false bounds=53.477143,-2.152315,53.491718,-2.125757 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 agg_ms=0.5 json_ms=1.0 total_ms=1.5 -2026-04-04T21:24:23.666695Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=5706 filters=1 travel=0 total=5706 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.1 -2026-04-04T21:24:24.568711Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=189 postcodes_after_filter=56 filtered_out=133 truncated=false bounds=53.482183,-2.144906,53.487085,-2.135973 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 agg_ms=0.2 json_ms=0.2 total_ms=0.4 -2026-04-04T21:24:25.389443Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=490 postcodes_after_filter=359 filtered_out=131 truncated=false bounds=53.476876,-2.152708,53.491964,-2.125216 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 agg_ms=0.6 json_ms=1.0 total_ms=1.7 -2026-04-04T21:24:25.593220Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=5706 filters=1 travel=0 total=5706 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.1 -2026-04-04T21:24:41.891969Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=125872 parallel=true cells_before_filter=1415 cells_after_filter=1288 truncated=false bounds=53.4320,-2.2230,53.5317,-2.0413 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=2.1 json_ms=1.1 total_ms=3.2 -2026-04-04T21:24:42.170303Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=125872 filters=1 travel=0 total=125872 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=1.3 -2026-04-04T21:24:42.688720Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=196711 parallel=true cells_before_filter=2085 cells_after_filter=1991 truncated=false bounds=53.4175,-2.2456,53.5445,-2.0142 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=2.8 json_ms=1.6 total_ms=4.4 -2026-04-04T21:24:42.988758Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=196711 filters=1 travel=0 total=196711 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=2.1 -2026-04-04T21:24:43.709197Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=435862 parallel=true cells_before_filter=4860 cells_after_filter=4855 truncated=false bounds=53.3643,-2.3421,53.5966,-1.9189 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=6.4 json_ms=3.9 total_ms=10.3 -2026-04-04T21:24:44.015987Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=435862 filters=1 travel=0 total=435862 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=3.5 -2026-04-04T21:24:44.624079Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=893715 parallel=true cells_before_filter=3540 cells_after_filter=3529 truncated=false bounds=53.2120,-2.5934,53.7180,-1.6718 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=6.9 json_ms=2.8 total_ms=9.7 -2026-04-04T21:24:45.350639Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1734886 parallel=true cells_before_filter=1581 cells_after_filter=1581 truncated=false bounds=53.0782,-2.8134,53.8241,-1.4553 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=9.1 json_ms=1.4 total_ms=10.5 -2026-04-04T21:24:45.604975Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1734886 filters=1 travel=0 total=1734886 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=13.9 -2026-04-04T21:24:46.180287Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3892616 parallel=true cells_before_filter=5366 cells_after_filter=5366 truncated=false bounds=52.6235,-3.5562,54.1803,-0.7247 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=19.3 json_ms=4.2 total_ms=23.5 -2026-04-04T21:24:46.449876Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3892616 filters=1 travel=0 total=3892616 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=31.8 -2026-04-04T21:24:47.819112Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=6818445 parallel=true cells_before_filter=2211 cells_after_filter=2211 truncated=false bounds=51.8572,-4.7014,54.7296,0.5116 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.2 agg_ms=42.3 json_ms=1.8 total_ms=44.3 -2026-04-04T21:24:48.094435Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=6818445 filters=1 travel=0 total=6818445 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=69.3 -2026-04-04T21:24:49.333863Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13027236 parallel=true cells_before_filter=3669 cells_after_filter=3669 truncated=false bounds=50.9369,-5.8570,55.1567,1.7615 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.6 agg_ms=78.8 json_ms=3.2 total_ms=82.5 -2026-04-04T21:24:49.683517Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=13027236 filters=1 travel=0 total=13027236 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=128.8 -2026-04-04T21:24:50.662829Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=12202101 parallel=true cells_before_filter=3277 cells_after_filter=3277 truncated=false bounds=51.2675,-5.5838,55.4564,2.0348 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.4 agg_ms=83.4 json_ms=3.2 total_ms=87.1 -2026-04-04T21:24:51.137905Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=2026522 parallel=true cells_before_filter=1888 cells_after_filter=1888 truncated=false bounds=53.1545,-2.9036,53.9816,-1.3936 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=10.8 json_ms=1.5 total_ms=12.4 -2026-04-04T21:24:51.388879Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=2026522 filters=1 travel=0 total=2026522 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=16.5 -2026-04-04T21:24:51.929091Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1241531 parallel=true cells_before_filter=911 cells_after_filter=911 truncated=false bounds=53.2937,-2.7014,53.8681,-1.6523 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=6.0 json_ms=0.8 total_ms=6.8 -2026-04-04T21:24:52.190753Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1241531 filters=1 travel=0 total=1241531 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=10.1 -2026-04-04T21:24:52.803403Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T21:24:52.808290Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T21:24:53.118091Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1297595 parallel=true cells_before_filter=974 cells_after_filter=974 truncated=false bounds=53.2866,-2.7142,53.8751,-1.6394 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.3 json_ms=0.5 total_ms=6.8 -2026-04-04T21:24:53.364315Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1297595 filters=1 travel=0 total=1297595 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=10.5 -2026-04-04T21:24:54.379717Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1475448 parallel=true cells_before_filter=1184 cells_after_filter=1184 truncated=false bounds=53.2526,-2.7695,53.9027,-1.5822 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=7.6 json_ms=0.6 total_ms=8.2 -2026-04-04T21:24:54.655040Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1475448 filters=1 travel=0 total=1475448 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=12.9 -2026-04-04T21:24:55.395013Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1475448 parallel=true cells_before_filter=1184 cells_after_filter=1184 truncated=false bounds=53.2526,-2.7695,53.9027,-1.5822 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=7.4 json_ms=0.9 total_ms=8.3 -2026-04-04T21:24:57.930373Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=630781 parallel=true cells_before_filter=2018 cells_after_filter=2017 truncated=false bounds=53.4130,-2.5358,53.7751,-1.8742 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=7.3 json_ms=2.1 total_ms=9.4 -2026-04-04T21:24:58.165801Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=630781 filters=1 travel=0 total=630781 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=5.5 -2026-04-04T21:24:59.358368Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=141544 parallel=true cells_before_filter=2109 cells_after_filter=2007 truncated=false bounds=53.5270,-2.3691,53.6839,-2.0824 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=3.7 json_ms=1.7 total_ms=5.5 -2026-04-04T21:24:59.601734Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=141544 filters=1 travel=0 total=141544 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=1.7 -2026-04-04T21:25:01.456217Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=482887 parallel=true cells_before_filter=1484 cells_after_filter=1484 truncated=false bounds=53.4465,-2.4869,53.7484,-1.9353 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=3.8 json_ms=1.1 total_ms=4.9 -2026-04-04T21:25:01.709375Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=482887 filters=1 travel=0 total=482887 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=4.3 -2026-04-04T21:25:02.488592Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=21121 parallel=false cells_before_filter=338 cells_after_filter=308 truncated=false bounds=53.5811,-2.2899,53.6405,-2.1814 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.9 json_ms=0.3 total_ms=1.2 -2026-04-04T21:25:02.734923Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=21121 filters=1 travel=0 total=21121 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.3 -2026-04-04T21:25:03.366449Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=6807 parallel=false cells_before_filter=135 cells_after_filter=120 truncated=false bounds=53.5960,-2.2681,53.6285,-2.2086 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.2 json_ms=0.1 total_ms=0.4 -2026-04-04T21:25:03.614054Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=6807 filters=1 travel=0 total=6807 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.1 -2026-04-04T21:25:04.217278Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=134 postcodes_after_filter=48 filtered_out=86 truncated=false bounds=53.602861,-2.258041,53.623019,-2.221200 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 agg_ms=0.2 json_ms=0.2 total_ms=0.3 -2026-04-04T21:25:04.497463Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1187 filters=1 travel=0 total=1187 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.1 -2026-04-04T21:25:05.401826Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=11630 parallel=false cells_before_filter=219 cells_after_filter=202 truncated=false bounds=53.5898,-2.2773,53.6336,-2.1972 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.5 json_ms=0.2 total_ms=0.7 -2026-04-04T21:25:05.626108Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=11630 filters=1 travel=0 total=11630 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.2 -2026-04-04T21:25:06.999635Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=45039 parallel=false cells_before_filter=735 cells_after_filter=668 truncated=false bounds=53.5648,-2.3138,53.6536,-2.1516 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.4 json_ms=0.6 total_ms=2.0 -2026-04-04T21:25:07.291454Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=45039 filters=1 travel=0 total=45039 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.6 -2026-04-04T21:25:08.673601Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=6807 parallel=false cells_before_filter=135 cells_after_filter=111 truncated=false bounds=53.5917,-2.2702,53.6233,-2.2123 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.2 json_ms=0.1 total_ms=0.4 -2026-04-04T21:25:08.889264Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=6807 filters=1 travel=0 total=6807 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.1 -2026-04-04T21:25:11.869639Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=5043 parallel=false cells_before_filter=122 cells_after_filter=107 truncated=false bounds=53.5943,-2.2762,53.6260,-2.2183 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.2 json_ms=0.1 total_ms=0.3 -2026-04-04T21:25:12.136461Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=5043 filters=1 travel=0 total=5043 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.1 -2026-04-04T21:25:13.346199Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=13775 parallel=false cells_before_filter=219 cells_after_filter=191 truncated=false bounds=53.5874,-2.2839,53.6292,-2.2075 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.5 json_ms=0.2 total_ms=0.6 -2026-04-04T21:25:13.636105Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=13775 filters=1 travel=0 total=13775 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.2 -2026-04-04T21:25:15.227143Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=30294 parallel=false cells_before_filter=491 cells_after_filter=481 truncated=false bounds=53.5647,-2.3123,53.6388,-2.1769 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.9 json_ms=0.4 total_ms=1.3 -2026-04-04T21:25:15.500335Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=30294 filters=1 travel=0 total=30294 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.5 -2026-04-04T21:25:17.186115Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=39234 parallel=false cells_before_filter=599 cells_after_filter=550 truncated=false bounds=53.5434,-2.2831,53.6175,-2.1477 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.4 json_ms=0.6 total_ms=2.0 -2026-04-04T21:25:17.379726Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=39234 filters=1 travel=0 total=39234 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.5 -2026-04-04T21:25:18.196119Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=80938 parallel=true cells_before_filter=1122 cells_after_filter=1029 truncated=false bounds=53.5290,-2.3100,53.6269,-2.1314 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.9 json_ms=0.9 total_ms=2.8 -2026-04-04T21:25:18.502221Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=80938 filters=1 travel=0 total=80938 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.9 -2026-04-04T21:25:19.555827Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=87450 parallel=true cells_before_filter=1165 cells_after_filter=1091 truncated=false bounds=53.5171,-2.3084,53.6150,-2.1297 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=2.0 json_ms=1.0 total_ms=3.1 -2026-04-04T21:25:20.251105Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=6799 parallel=false cells_before_filter=101 cells_after_filter=86 truncated=false bounds=53.5581,-2.2420,53.5838,-2.1950 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.2 json_ms=0.1 total_ms=0.3 -2026-04-04T21:25:20.469556Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=6799 filters=1 travel=0 total=6799 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.1 -2026-04-04T21:25:20.875551Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=4514 parallel=false cells_before_filter=75 cells_after_filter=75 truncated=false bounds=53.5536,-2.2417,53.5793,-2.1947 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.3 json_ms=0.1 total_ms=0.4 -2026-04-04T21:25:21.578531Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=113944 parallel=true cells_before_filter=1485 cells_after_filter=1385 truncated=false bounds=53.5055,-2.3235,53.6155,-2.1226 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=2.2 json_ms=1.1 total_ms=3.3 -2026-04-04T21:25:21.789192Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=113944 filters=1 travel=0 total=113944 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=1.0 -2026-04-04T21:25:22.365967Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=495522 parallel=true cells_before_filter=5928 cells_after_filter=5922 truncated=false bounds=53.4138,-2.4802,53.6854,-1.9846 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=7.3 json_ms=5.1 total_ms=12.4 -2026-04-04T21:25:22.611118Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=495522 filters=1 travel=0 total=495522 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=3.8 -2026-04-04T21:25:23.470771Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1233394 parallel=true cells_before_filter=909 cells_after_filter=909 truncated=false bounds=53.2464,-2.7654,53.8121,-1.7334 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=6.6 json_ms=0.8 total_ms=7.4 -2026-04-04T21:25:23.675686Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1233394 filters=1 travel=0 total=1233394 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=9.6 -2026-04-04T21:25:25.802554Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=5193892 parallel=true cells_before_filter=1431 cells_after_filter=1431 truncated=false bounds=52.3020,-4.3764,54.4993,-0.3794 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.2 agg_ms=21.6 json_ms=1.0 total_ms=22.8 -2026-04-04T21:25:26.130438Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=5193892 filters=1 travel=0 total=5193892 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=41.5 -2026-04-04T21:25:26.790247Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=11373033 parallel=true cells_before_filter=3016 cells_after_filter=3016 truncated=false bounds=51.3516,-6.4391,55.4512,1.0238 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.5 agg_ms=78.7 json_ms=2.6 total_ms=81.8 -2026-04-04T21:25:27.139727Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=11373033 filters=1 travel=0 total=11373033 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=120.5 -2026-04-04T21:25:28.269198Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1196051 parallel=true cells_before_filter=1270 cells_after_filter=1270 truncated=false bounds=53.4643,-2.4750,54.1562,-1.2044 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=7.0 json_ms=1.0 total_ms=8.0 -2026-04-04T21:25:28.564797Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1196051 filters=1 travel=0 total=1196051 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=9.8 -2026-04-04T21:25:29.820690Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=2131285 parallel=true cells_before_filter=2231 cells_after_filter=2231 truncated=false bounds=53.2194,-2.7823,54.1303,-1.1149 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=10.3 json_ms=1.6 total_ms=12.0 -2026-04-04T21:25:30.099688Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=2131285 filters=1 travel=0 total=2131285 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=17.3 -2026-04-04T21:25:52.728795Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T21:25:52.728945Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-04-04T21:25:52.728952Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-04-04T21:25:52.788147Z INFO property_map_server::data::property: Postcode features loaded rows=1262364 -2026-04-04T21:25:52.788157Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-04-04T21:25:55.029247Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203393 -2026-04-04T21:25:55.029283Z INFO property_map_server::data::property: Feature columns from config numeric=54 enums=7 total=61 -2026-04-04T21:25:56.017191Z INFO property_map_server::data::property: Combined data selected rows=15203393 -2026-04-04T21:25:56.174457Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-04-04T21:25:56.506324Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-04-04T21:25:57.577038Z INFO property_map_server::data::property: Extracting string columns -2026-04-04T21:25:58.922509Z INFO property_map_server::data::property: Building enum features -2026-04-04T21:26:00.188231Z INFO property_map_server::data::property: Extracting renovation history -2026-04-04T21:26:02.819456Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829784 -2026-04-04T21:26:02.819464Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-04-04T21:26:03.747644Z INFO property_map_server::data::property: Building interned strings -2026-04-04T21:26:09.179209Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-04-04T21:26:11.598079Z INFO property_map_server::data::property: Data loading complete -2026-04-04T21:26:12.610123Z INFO property_map_server: Property data loaded rows=15203393 features=61 enums=7 -2026-04-04T21:26:12.610132Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-04-04T21:26:12.703456Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-04-04T21:26:12.703466Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-04-04T21:26:13.062704Z INFO property_map_server::data::property: H3 precomputation complete (15203393 cells) -2026-04-04T21:26:13.062729Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-04-04T21:26:13.062735Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-04-04T21:26:13.083743Z INFO property_map_server::data::poi: Loaded 550611 POIs -2026-04-04T21:26:13.168120Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-04-04T21:26:13.168628Z INFO property_map_server::data::poi: POI data loading complete. -2026-04-04T21:26:13.199418Z INFO property_map_server: POI data loaded pois=550611 -2026-04-04T21:26:13.199428Z INFO property_map_server: Building POI spatial grid index -2026-04-04T21:26:13.204105Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-04-04T21:26:13.204119Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-04-04T21:26:13.206303Z INFO property_map_server::data::places: Loaded 3474 places -2026-04-04T21:26:13.207009Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-04-04T21:26:13.207058Z INFO property_map_server: Place data loaded places=3474 -2026-04-04T21:26:13.207066Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-04-04T21:26:13.207068Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-04-04T21:26:13.207815Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-04-04T21:26:21.471682Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-04-04T21:26:21.699479Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-04-04T21:26:21.837577Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-04-04T21:26:21.837632Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-04-04T21:26:21.837864Z INFO property_map_server: PMTiles loaded successfully -2026-04-04T21:26:21.874519Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-04-04T21:26:21.909323Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-04-04T21:26:21.909469Z INFO property_map_server: Precomputed features response groups=8 -2026-04-04T21:26:21.909487Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-04-04T21:26:21.956480Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-04-04T21:26:21.961990Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-04-04T21:26:21.965566Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-04-04T21:26:22.012192Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-04-04T21:26:22.015233Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-04-04T21:26:22.015258Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-04-04T21:26:22.015274Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-04-04T21:26:22.017206Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2753 -2026-04-04T21:26:22.018731Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=2753 -2026-04-04T21:26:22.020529Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=2753 -2026-04-04T21:26:22.021875Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=2752 -2026-04-04T21:26:22.021901Z INFO property_map_server: Travel time store loaded modes=4 -2026-04-04T21:26:22.021946Z INFO property_map_server: Precomputed AI filters system prompt -2026-04-04T21:26:23.341053Z INFO property_map_server: All memory pages locked (mlockall) -2026-04-04T21:26:23.341094Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-04-04T21:27:11.787474Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=347953 parallel=true cells_before_filter=1551 cells_after_filter=1547 truncated=false bounds=53.6208,-2.1919,53.9374,-1.6111 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=10.1 json_ms=1.5 total_ms=11.6 -2026-04-04T21:27:12.024401Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=347953 filters=1 travel=0 total=347953 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=3.3 -2026-04-04T21:27:12.466998Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=53069 parallel=true cells_before_filter=873 cells_after_filter=857 truncated=false bounds=53.7628,-1.9818,53.8685,-1.7877 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.8 total_ms=2.3 -2026-04-04T21:27:12.717108Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=53069 filters=1 travel=0 total=53069 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.7 -2026-04-04T21:27:15.745951Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=91391 parallel=true cells_before_filter=1334 cells_after_filter=1299 truncated=false bounds=53.7628,-2.0381,53.8685,-1.7314 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=2.0 json_ms=1.2 total_ms=3.2 -2026-04-04T21:27:15.993312Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=91391 filters=1 travel=0 total=91391 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.7 -2026-04-04T21:27:17.058890Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=99218 parallel=true cells_before_filter=1495 cells_after_filter=1382 truncated=false bounds=53.7793,-2.0193,53.8849,-1.7126 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=2.0 json_ms=1.2 total_ms=3.2 -2026-04-04T21:27:17.305051Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=99218 filters=1 travel=0 total=99218 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=1.0 -2026-04-04T21:27:28.664809Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T21:27:28.664958Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-04-04T21:27:28.664964Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-04-04T21:27:28.723545Z INFO property_map_server::data::property: Postcode features loaded rows=1262364 -2026-04-04T21:27:28.723555Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-04-04T21:27:34.972862Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T21:27:34.973031Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-04-04T21:27:34.973044Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-04-04T21:27:35.033910Z INFO property_map_server::data::property: Postcode features loaded rows=1262364 -2026-04-04T21:27:35.033922Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-04-04T21:27:37.455602Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203393 -2026-04-04T21:27:37.455638Z INFO property_map_server::data::property: Feature columns from config numeric=54 enums=7 total=61 -2026-04-04T21:27:38.400727Z INFO property_map_server::data::property: Combined data selected rows=15203393 -2026-04-04T21:27:38.555238Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-04-04T21:27:38.888730Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-04-04T21:27:39.916371Z INFO property_map_server::data::property: Extracting string columns -2026-04-04T21:27:41.225969Z INFO property_map_server::data::property: Building enum features -2026-04-04T21:27:42.501599Z INFO property_map_server::data::property: Extracting renovation history -2026-04-04T21:27:45.093068Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1829784 -2026-04-04T21:27:45.093077Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-04-04T21:27:45.925955Z INFO property_map_server::data::property: Building interned strings -2026-04-04T21:27:51.209417Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-04-04T21:27:53.761298Z INFO property_map_server::data::property: Data loading complete -2026-04-04T21:27:54.975285Z INFO property_map_server: Property data loaded rows=15203393 features=61 enums=7 -2026-04-04T21:27:54.975295Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-04-04T21:27:55.076486Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-04-04T21:27:55.076495Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-04-04T21:27:55.450871Z INFO property_map_server::data::property: H3 precomputation complete (15203393 cells) -2026-04-04T21:27:55.450896Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-04-04T21:27:55.450903Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-04-04T21:27:55.469364Z INFO property_map_server::data::poi: Loaded 550611 POIs -2026-04-04T21:27:55.557922Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-04-04T21:27:55.558367Z INFO property_map_server::data::poi: POI data loading complete. -2026-04-04T21:27:55.595244Z INFO property_map_server: POI data loaded pois=550611 -2026-04-04T21:27:55.595259Z INFO property_map_server: Building POI spatial grid index -2026-04-04T21:27:55.600118Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-04-04T21:27:55.600131Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-04-04T21:27:55.600656Z INFO property_map_server::data::places: Loaded 3474 places -2026-04-04T21:27:55.601496Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-04-04T21:27:55.601547Z INFO property_map_server: Place data loaded places=3474 -2026-04-04T21:27:55.601556Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-04-04T21:27:55.601559Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-04-04T21:27:55.602358Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-04-04T21:28:01.839376Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-04-04T21:28:02.059240Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-04-04T21:28:02.200249Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-04-04T21:28:02.200307Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-04-04T21:28:02.200608Z INFO property_map_server: PMTiles loaded successfully -2026-04-04T21:28:02.235489Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-04-04T21:28:02.262240Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-04-04T21:28:02.262409Z INFO property_map_server: Precomputed features response groups=8 -2026-04-04T21:28:02.262422Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-04-04T21:28:02.320610Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-04-04T21:28:02.322978Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-04-04T21:28:02.387943Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-04-04T21:28:02.434871Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-04-04T21:28:02.438845Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-04-04T21:28:02.438873Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-04-04T21:28:02.438890Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-04-04T21:28:02.440124Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2753 -2026-04-04T21:28:02.441306Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=2753 -2026-04-04T21:28:02.442591Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=2753 -2026-04-04T21:28:02.443956Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=2752 -2026-04-04T21:28:02.443974Z INFO property_map_server: Travel time store loaded modes=4 -2026-04-04T21:28:02.444024Z INFO property_map_server: Precomputed AI filters system prompt -2026-04-04T21:28:03.733901Z INFO property_map_server: All memory pages locked (mlockall) -2026-04-04T21:28:03.733937Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-04-04T21:28:10.011222Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=426 postcodes_after_filter=311 filtered_out=115 truncated=false bounds=53.824509,-1.880638,53.847026,-1.815260 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 agg_ms=0.6 json_ms=1.7 total_ms=2.3 -2026-04-04T21:28:10.323621Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=5085 filters=1 travel=0 total=5085 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.1 -2026-04-04T21:28:10.989272Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=426 postcodes_after_filter=292 filtered_out=134 truncated=false bounds=53.821303,-1.881892,53.843821,-1.816513 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 agg_ms=0.5 json_ms=1.1 total_ms=1.6 -2026-04-04T21:28:11.380501Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=38339 parallel=false cells_before_filter=597 cells_after_filter=562 truncated=false bounds=53.8007,-1.9389,53.8611,-1.7636 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.6 total_ms=2.1 -2026-04-04T21:28:11.677279Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=38339 filters=1 travel=0 total=38339 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.6 -2026-04-04T21:28:15.722697Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=7132 parallel=false cells_before_filter=131 cells_after_filter=115 truncated=false bounds=53.8174,-1.8898,53.8433,-1.8145 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.3 json_ms=0.1 total_ms=0.4 -2026-04-04T21:28:15.969692Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=7132 filters=1 travel=0 total=7132 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.1 -2026-04-04T21:28:18.463608Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=190 postcodes_after_filter=95 filtered_out=95 truncated=false bounds=53.823693,-1.871321,53.837419,-1.831471 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 agg_ms=0.2 json_ms=0.3 total_ms=0.6 -2026-04-04T21:28:18.748191Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=2315 filters=1 travel=0 total=2315 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.1 -2026-04-04T21:28:19.685883Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=201 postcodes_after_filter=184 filtered_out=17 truncated=false bounds=53.820906,-1.879234,53.839748,-1.824532 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 agg_ms=0.2 json_ms=0.6 total_ms=0.8 -2026-04-04T21:28:20.057723Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=201 postcodes_after_filter=192 filtered_out=9 truncated=false bounds=53.820751,-1.879673,53.839877,-1.824147 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 agg_ms=0.3 json_ms=0.6 total_ms=1.0 -2026-04-04T21:28:20.494347Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=590 postcodes_after_filter=283 filtered_out=307 truncated=false bounds=53.819134,-1.884266,53.841229,-1.820119 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 agg_ms=0.8 json_ms=1.1 total_ms=1.9 -2026-04-04T21:28:20.736977Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=7132 filters=1 travel=0 total=7132 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.1 -2026-04-04T21:28:21.116412Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=7132 parallel=false cells_before_filter=131 cells_after_filter=115 truncated=false bounds=53.8168,-1.8908,53.8431,-1.8144 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.4 json_ms=0.2 total_ms=0.5 -2026-04-04T21:28:21.387966Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=7132 filters=1 travel=0 total=7132 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.2 -2026-04-04T21:28:23.333561Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=201 postcodes_after_filter=170 filtered_out=31 truncated=false bounds=53.821830,-1.876286,53.839491,-1.825012 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 agg_ms=0.3 json_ms=0.6 total_ms=0.9 -2026-04-04T21:28:23.644233Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=2390 filters=1 travel=0 total=2390 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.0 -2026-04-04T21:28:26.939418Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=577 postcodes_after_filter=259 filtered_out=318 truncated=false bounds=53.819923,-1.881362,53.841155,-1.819720 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 agg_ms=0.6 json_ms=0.8 total_ms=1.4 -2026-04-04T21:28:27.640195Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=7132 parallel=false cells_before_filter=131 cells_after_filter=113 truncated=false bounds=53.8179,-1.8868,53.8429,-1.8141 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.4 json_ms=0.2 total_ms=0.5 -2026-04-04T21:28:27.890095Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=7132 filters=1 travel=0 total=7132 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.1 -2026-04-04T21:28:31.722654Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=891942cd14bffff resolution=9 total_count=87 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.1 -2026-04-04T21:28:32.081693Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=7047 parallel=false cells_before_filter=120 cells_after_filter=98 truncated=false bounds=53.8179,-1.8803,53.8429,-1.8205 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.3 json_ms=0.1 total_ms=0.4 -2026-04-04T21:28:32.343104Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=7047 filters=1 travel=0 total=7047 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.1 -2026-04-04T21:28:55.584614Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=23936 parallel=false cells_before_filter=382 cells_after_filter=348 truncated=false bounds=53.8052,-1.9143,53.8569,-1.7907 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.3 total_ms=1.3 -2026-04-04T21:28:55.827169Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=23936 filters=1 travel=0 total=23936 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.4 -2026-04-04T21:28:56.478664Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=8750 parallel=false cells_before_filter=155 cells_after_filter=142 truncated=false bounds=53.8143,-1.8899,53.8469,-1.8121 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.4 json_ms=0.2 total_ms=0.6 -2026-04-04T21:28:56.722027Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=8750 filters=1 travel=0 total=8750 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.2 -2026-04-04T21:29:07.746246Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=20144 parallel=false cells_before_filter=345 cells_after_filter=292 truncated=false bounds=53.8038,-1.9140,53.8514,-1.8003 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.7 json_ms=0.3 total_ms=1.0 -2026-04-04T21:29:07.999314Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=20144 filters=1 travel=0 total=20144 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.4 -2026-04-04T21:29:13.081915Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=138104 parallel=true cells_before_filter=2157 cells_after_filter=2100 truncated=false bounds=53.7500,-2.0477,53.9030,-1.6821 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=8.2 json_ms=3.0 total_ms=11.3 -2026-04-04T21:29:13.318739Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=138104 filters=1 travel=0 total=138104 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=1.3 -2026-04-04T21:29:13.990666Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=35316 parallel=false cells_before_filter=555 cells_after_filter=499 truncated=false bounds=53.7954,-1.9349,53.8594,-1.7818 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.4 total_ms=1.5 -2026-04-04T21:29:14.265038Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=35316 filters=1 travel=0 total=35316 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.6 -2026-04-04T21:29:14.914390Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=891942cd14bffff resolution=9 total_count=87 filters=0 filters_raw="-" ms=0.1 -2026-04-04T21:29:14.914700Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=35316 parallel=false cells_before_filter=555 cells_after_filter=499 truncated=false bounds=53.7954,-1.9349,53.8594,-1.7818 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.8 json_ms=0.3 total_ms=1.1 -2026-04-04T21:29:21.096776Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=35316 parallel=false cells_before_filter=555 cells_after_filter=499 truncated=false bounds=53.7954,-1.9349,53.8594,-1.7818 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.6 json_ms=0.6 total_ms=2.2 -2026-04-04T21:29:23.135019Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=35316 parallel=false cells_before_filter=555 cells_after_filter=504 truncated=false bounds=53.7952,-1.9352,53.8596,-1.7814 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.4 total_ms=1.6 -2026-04-04T21:29:24.036190Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=39490 parallel=false cells_before_filter=624 cells_after_filter=553 truncated=false bounds=53.7943,-1.9374,53.8603,-1.7798 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.5 total_ms=1.6 -2026-04-04T21:29:24.522514Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=73569 parallel=true cells_before_filter=1143 cells_after_filter=1080 truncated=false bounds=53.7771,-1.9798,53.8736,-1.7492 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=4.6 json_ms=0.8 total_ms=5.4 -2026-04-04T21:29:26.348676Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=65304 parallel=true cells_before_filter=1040 cells_after_filter=1038 truncated=false bounds=53.7813,-1.9748,53.8777,-1.7442 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.4 json_ms=1.2 total_ms=2.6 -2026-04-04T21:29:28.594018Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=82796 parallel=true cells_before_filter=1241 cells_after_filter=1218 truncated=false bounds=53.7813,-1.9995,53.8777,-1.7195 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.7 json_ms=1.1 total_ms=2.9 -2026-04-04T21:29:49.305834Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=294467 parallel=true cells_before_filter=4705 cells_after_filter=4576 truncated=false bounds=53.7161,-2.1842,53.9316,-1.5588 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=5.9 json_ms=5.5 total_ms=11.5 -2026-04-04T21:29:50.604880Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=337834 parallel=true cells_before_filter=5113 cells_after_filter=4939 truncated=false bounds=53.7096,-2.1449,53.9251,-1.5194 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=6.4 json_ms=4.8 total_ms=11.1 -2026-04-04T21:29:56.752721Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=2397191 parallel=true cells_before_filter=2201 cells_after_filter=2201 truncated=false bounds=53.3479,-3.3374,54.1166,-1.1108 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=14.1 json_ms=1.8 total_ms=16.0 -2026-04-04T21:29:57.713703Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=5087858 parallel=true cells_before_filter=1489 cells_after_filter=1489 truncated=false bounds=52.4699,-6.3671,54.6166,-0.1754 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.3 agg_ms=24.1 json_ms=1.4 total_ms=25.7 -2026-04-04T21:30:01.060907Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=684 cells_after_filter=684 truncated=false bounds=48.8064,-13.1250,56.4830,8.6250 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=66.7 json_ms=0.6 total_ms=68.1 -2026-04-04T21:30:02.219696Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13169637 parallel=true cells_before_filter=3374 cells_after_filter=3374 truncated=false bounds=50.2432,-6.3164,53.8345,3.6939 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.5 agg_ms=59.9 json_ms=2.9 total_ms=63.3 -2026-04-04T21:30:02.874487Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=5607163 parallel=true cells_before_filter=6865 cells_after_filter=6865 truncated=false bounds=51.0991,-1.9396,52.4124,1.6959 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=25.6 json_ms=5.5 total_ms=31.2 -2026-04-04T21:30:03.690035Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=5528601 parallel=true cells_before_filter=6901 cells_after_filter=6901 truncated=false bounds=50.9828,-2.0299,52.2995,1.6056 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=29.9 json_ms=5.7 total_ms=35.7 -2026-04-04T21:30:06.102583Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3013192 parallel=true cells_before_filter=6695 cells_after_filter=6688 truncated=false bounds=51.3269,-0.7786,51.8230,0.5891 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=18.0 json_ms=5.7 total_ms=23.8 -2026-04-04T21:30:07.773783Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4117670 parallel=true cells_before_filter=3011 cells_after_filter=3011 truncated=false bounds=51.1921,-1.3108,52.0032,0.9263 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=18.1 json_ms=2.4 total_ms=20.5 -2026-04-04T21:30:12.502609Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=592886 parallel=true cells_before_filter=5330 cells_after_filter=5281 truncated=false bounds=51.5610,-0.3722,51.7634,0.1871 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=7.5 json_ms=4.6 total_ms=12.2 -2026-04-04T21:30:14.708086Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=297106 parallel=true cells_before_filter=2754 cells_after_filter=2722 truncated=false bounds=51.5933,-0.2872,51.7371,0.1100 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=4.4 json_ms=2.3 total_ms=6.7 -2026-04-04T21:30:36.062858Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=1004997 parallel=true cells_before_filter=8555 cells_after_filter=8488 truncated=false bounds=51.5353,-0.4799,51.7896,0.2228 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=12.5 json_ms=7.9 total_ms=20.4 -2026-04-04T21:30:40.917272Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=1170804 parallel=true cells_before_filter=9057 cells_after_filter=9032 truncated=false bounds=51.5124,-0.4667,51.7669,0.2359 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=13.5 json_ms=8.4 total_ms=21.8 -2026-04-04T21:30:50.744626Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=1411338 parallel=true cells_before_filter=9609 cells_after_filter=9578 truncated=false bounds=51.4806,-0.4669,51.7353,0.2357 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=16.7 json_ms=8.7 total_ms=25.5 -2026-04-04T21:30:58.389937Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1773792 parallel=true cells_before_filter=2705 cells_after_filter=2699 truncated=false bounds=51.4581,-0.5455,51.7568,0.2785 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=10.4 json_ms=2.0 total_ms=12.5 -2026-04-04T21:30:59.298129Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=2160118 parallel=true cells_before_filter=3703 cells_after_filter=3702 truncated=false bounds=51.4272,-0.6534,51.7863,0.3372 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=11.6 json_ms=2.7 total_ms=14.4 -2026-04-04T21:30:59.866035Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=1045678 parallel=true cells_before_filter=6917 cells_after_filter=6685 truncated=false bounds=51.5066,-0.3761,51.7104,0.1862 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=10.6 json_ms=6.7 total_ms=17.3 -2026-04-04T21:31:00.598034Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=532096 parallel=true cells_before_filter=3591 cells_after_filter=3554 truncated=false bounds=51.5403,-0.2689,51.6831,0.1252 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=5.9 json_ms=3.1 total_ms=9.0 -2026-04-04T21:31:01.673510Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=765887 parallel=true cells_before_filter=5083 cells_after_filter=5002 truncated=false bounds=51.5256,-0.3207,51.6998,0.1600 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=8.2 json_ms=4.1 total_ms=12.3 -2026-04-04T21:31:03.865297Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=786332 parallel=true cells_before_filter=5323 cells_after_filter=5159 truncated=false bounds=51.5248,-0.3236,51.7007,0.1619 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=8.1 json_ms=4.3 total_ms=12.4 -2026-04-04T21:31:12.740369Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=786332 parallel=true cells_before_filter=5323 cells_after_filter=5159 truncated=false bounds=51.5248,-0.3236,51.7007,0.1619 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=7.9 json_ms=4.6 total_ms=12.5 -2026-04-04T21:31:13.248482Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=786332 parallel=true cells_before_filter=5323 cells_after_filter=5159 truncated=false bounds=51.5248,-0.3236,51.7007,0.1619 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.0 json_ms=2.8 total_ms=8.8 -2026-04-04T21:31:13.856771Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=786332 parallel=true cells_before_filter=5323 cells_after_filter=5159 truncated=false bounds=51.5248,-0.3236,51.7007,0.1619 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=8.1 json_ms=5.2 total_ms=13.2 -2026-04-04T21:31:30.556844Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=627630 parallel=true cells_before_filter=4637 cells_after_filter=4582 truncated=false bounds=51.5412,-0.2778,51.7171,0.2077 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=6.6 json_ms=4.6 total_ms=11.2 -2026-04-04T21:31:32.422114Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=391345 parallel=true cells_before_filter=3031 cells_after_filter=2926 truncated=false bounds=51.5644,-0.2187,51.7009,0.1583 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=4.6 json_ms=2.3 total_ms=6.9 -2026-04-04T21:31:37.600351Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=221277 parallel=true cells_before_filter=1537 cells_after_filter=1428 truncated=false bounds=51.5792,-0.1423,51.6644,0.0928 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=2.8 json_ms=1.2 total_ms=4.0 -2026-04-04T21:31:38.415050Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=221277 parallel=true cells_before_filter=1537 cells_after_filter=1422 truncated=false bounds=51.5793,-0.1417,51.6641,0.0922 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=2.9 json_ms=1.3 total_ms=4.2 -2026-04-04T21:31:38.943318Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=336467 parallel=true cells_before_filter=2450 cells_after_filter=2324 truncated=false bounds=51.5696,-0.1920,51.6882,0.1354 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=4.1 json_ms=2.1 total_ms=6.2 -2026-04-04T21:31:56.678110Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=483490 parallel=true cells_before_filter=3617 cells_after_filter=3397 truncated=false bounds=51.5584,-0.2429,51.7075,0.1688 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=5.6 json_ms=3.5 total_ms=9.1 -2026-04-04T21:32:05.629616Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3344923 parallel=true cells_before_filter=1652 cells_after_filter=1652 truncated=false bounds=51.3368,-0.9063,51.9227,0.7110 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=14.6 json_ms=1.3 total_ms=15.9 -2026-04-04T21:32:06.669355Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=6697945 parallel=true cells_before_filter=9464 cells_after_filter=9464 truncated=false bounds=50.8847,-2.4875,52.4676,1.8868 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=39.3 json_ms=8.3 total_ms=47.7 -2026-04-04T21:32:07.699409Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14461269 parallel=true cells_before_filter=683 cells_after_filter=683 truncated=false bounds=47.9331,-13.1250,55.7502,8.6250 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=64.6 json_ms=0.6 total_ms=66.0 -2026-04-04T21:32:09.967169Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=684 cells_after_filter=684 truncated=false bounds=48.9908,-13.1250,56.6376,8.6250 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=60.9 json_ms=0.6 total_ms=62.4 -2026-04-04T21:32:13.933486Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=8373227 parallel=true cells_before_filter=2077 cells_after_filter=2077 truncated=false bounds=51.3092,-3.9232,53.3230,1.7224 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.2 agg_ms=36.0 json_ms=1.6 total_ms=37.8 -2026-04-04T21:32:16.663258Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=675 cells_after_filter=675 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=60.0 json_ms=0.5 total_ms=61.4 -2026-04-04T21:32:17.817855Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=675 cells_after_filter=675 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.9 agg_ms=33.0 json_ms=0.4 total_ms=34.3 -2026-04-04T21:32:19.556047Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=675 cells_after_filter=675 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=1.0 agg_ms=60.6 json_ms=0.5 total_ms=62.1 -2026-04-04T21:32:22.335116Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=675 cells_after_filter=675 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=1.2 agg_ms=61.5 json_ms=0.5 total_ms=63.3 -2026-04-04T21:32:22.665769Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14454856 filters=1 travel=0 total=14454856 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=120.4 -2026-04-04T21:32:23.735404Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=675 cells_after_filter=675 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=0 travel_entries=0 grid_ms=1.0 agg_ms=64.7 json_ms=0.3 total_ms=66.1 -2026-04-04T21:32:24.281296Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=674 cells_after_filter=674 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=1 filters_raw="Property type:Detached|Terraced|Flats/Maisonettes|Other" fields=0 travel_entries=0 grid_ms=0.9 agg_ms=58.3 json_ms=0.4 total_ms=59.6 -2026-04-04T21:32:24.636997Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14454856 filters=1 travel=0 total=10723799 filters_raw="Property type:Detached|Terraced|Flats/Maisonettes|Other" ms=156.8 -2026-04-04T21:32:25.094978Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=675 cells_after_filter=675 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=1 filters_raw="Property type:Detached|Terraced|Flats/Maisonettes|Other|Semi-Detached" fields=0 travel_entries=0 grid_ms=1.1 agg_ms=60.8 json_ms=0.4 total_ms=62.3 -2026-04-04T21:32:25.384531Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14454856 filters=1 travel=0 total=14454856 filters_raw="Property type:Detached|Terraced|Flats/Maisonettes|Other|Semi-Detached" ms=121.9 -2026-04-04T21:32:26.613557Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=674 cells_after_filter=674 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=1 filters_raw="Property type:Detached|Terraced|Flats/Maisonettes|Other" fields=0 travel_entries=0 grid_ms=0.9 agg_ms=60.5 json_ms=0.4 total_ms=61.8 -2026-04-04T21:32:26.892632Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14454856 filters=1 travel=0 total=10723799 filters_raw="Property type:Detached|Terraced|Flats/Maisonettes|Other" ms=158.7 -2026-04-04T21:32:28.668464Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=674 cells_after_filter=674 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=1 filters_raw="Property type:Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=1.2 agg_ms=61.2 json_ms=0.6 total_ms=63.0 -2026-04-04T21:32:31.751601Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=675 cells_after_filter=675 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=1 filters_raw="Property type:Detached|Terraced|Flats/Maisonettes|Other|Semi-Detached" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=60.2 json_ms=0.5 total_ms=61.7 -2026-04-04T21:32:32.055189Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14454856 filters=1 travel=0 total=14454856 filters_raw="Property type:Detached|Terraced|Flats/Maisonettes|Other|Semi-Detached" ms=121.3 -2026-04-04T21:32:33.490781Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=675 cells_after_filter=675 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=1 filters_raw="Property type:Detached|Terraced|Other|Semi-Detached" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=62.6 json_ms=0.5 total_ms=64.0 -2026-04-04T21:32:33.812666Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14454856 filters=1 travel=0 total=11724005 filters_raw="Property type:Detached|Terraced|Other|Semi-Detached" ms=139.1 -2026-04-04T21:32:40.739326Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=674 cells_after_filter=674 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=1 filters_raw="Property type:Detached|Terraced|Other" fields=1 travel_entries=0 grid_ms=1.0 agg_ms=64.6 json_ms=0.9 total_ms=66.4 -2026-04-04T21:32:41.073620Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=674 cells_after_filter=674 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=1 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=60.6 json_ms=0.6 total_ms=62.1 -2026-04-04T21:32:41.440620Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14454856 filters=1 travel=0 total=10723799 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" ms=154.9 -2026-04-04T21:32:42.371088Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=674 cells_after_filter=674 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=1 filters_raw="Property type:Detached|Terraced|Other" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=58.4 json_ms=0.6 total_ms=59.9 -2026-04-04T21:32:42.726570Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14454856 filters=1 travel=0 total=7992948 filters_raw="Property type:Detached|Terraced|Other" ms=168.8 -2026-04-04T21:32:43.395357Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=674 cells_after_filter=674 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=1 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=62.2 json_ms=0.5 total_ms=63.7 -2026-04-04T21:32:43.722558Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14454856 filters=1 travel=0 total=10723799 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" ms=151.6 -2026-04-04T21:32:44.510833Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=674 cells_after_filter=674 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=1 filters_raw="Property type:Detached|Terraced|Other" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=59.1 json_ms=0.6 total_ms=60.7 -2026-04-04T21:32:44.864173Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14454856 filters=1 travel=0 total=7992948 filters_raw="Property type:Detached|Terraced|Other" ms=166.8 -2026-04-04T21:32:45.584213Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=674 cells_after_filter=674 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=1 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=60.2 json_ms=0.5 total_ms=61.7 -2026-04-04T21:32:45.927175Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14454856 filters=1 travel=0 total=10723799 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" ms=155.7 -2026-04-04T21:32:53.444776Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=12780596 parallel=true cells_before_filter=3350 cells_after_filter=3350 truncated=false bounds=49.4203,-7.2158,53.7443,4.7186 filters=1 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" fields=1 travel_entries=0 grid_ms=0.5 agg_ms=56.6 json_ms=2.5 total_ms=59.7 -2026-04-04T21:32:53.768234Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=12780596 filters=1 travel=0 total=9552008 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" ms=137.8 -2026-04-04T21:32:54.752631Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=9995567 parallel=true cells_before_filter=2685 cells_after_filter=2685 truncated=false bounds=50.1790,-4.6985,52.9895,3.0545 filters=1 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" fields=1 travel_entries=0 grid_ms=0.3 agg_ms=45.4 json_ms=2.1 total_ms=47.8 -2026-04-04T21:32:55.059537Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=9995567 filters=1 travel=0 total=7648127 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" ms=107.1 -2026-04-04T21:33:02.804486Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=10722150 parallel=true cells_before_filter=2991 cells_after_filter=2991 truncated=false bounds=49.9036,-5.5531,53.2819,3.7696 filters=1 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" fields=1 travel_entries=0 grid_ms=0.4 agg_ms=44.9 json_ms=2.7 total_ms=47.9 -2026-04-04T21:33:03.097495Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10722150 filters=1 travel=0 total=8166919 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" ms=110.9 -2026-04-04T21:33:03.770963Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13702207 parallel=true cells_before_filter=3737 cells_after_filter=3737 truncated=false bounds=48.8917,-8.6525,54.3257,6.3632 filters=1 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" fields=1 travel_entries=0 grid_ms=0.7 agg_ms=63.8 json_ms=3.0 total_ms=67.4 -2026-04-04T21:33:04.513496Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=10438893 parallel=true cells_before_filter=2876 cells_after_filter=2876 truncated=false bounds=50.0106,-5.2217,53.1687,3.4923 filters=1 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" fields=1 travel_entries=0 grid_ms=0.3 agg_ms=43.5 json_ms=2.5 total_ms=46.3 -2026-04-04T21:33:04.812953Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10438893 filters=1 travel=0 total=7963651 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" ms=110.7 -2026-04-04T21:33:05.601752Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=8625609 parallel=true cells_before_filter=2017 cells_after_filter=2017 truncated=false bounds=50.7299,-3.3220,52.6362,1.9472 filters=1 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" fields=1 travel_entries=0 grid_ms=0.2 agg_ms=33.5 json_ms=1.6 total_ms=35.4 -2026-04-04T21:33:05.965054Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=8625609 filters=1 travel=0 total=6631072 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" ms=87.7 -2026-04-04T21:33:06.553583Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=5248528 parallel=true cells_before_filter=6023 cells_after_filter=6023 truncated=false bounds=51.1160,-2.2110,52.2923,1.0414 filters=1 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=25.3 json_ms=5.1 total_ms=30.5 -2026-04-04T21:33:06.829140Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=5248528 filters=1 travel=0 total=4117755 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" ms=51.8 -2026-04-04T21:33:08.289506Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=96360 parallel=true cells_before_filter=1196 cells_after_filter=1054 truncated=false bounds=51.5790,-0.5645,51.6610,-0.3382 filters=1 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=2.2 json_ms=0.9 total_ms=3.0 -2026-04-04T21:33:08.544379Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=96360 filters=1 travel=0 total=71786 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" ms=1.2 -2026-04-04T21:33:15.174577Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=96360 parallel=true cells_before_filter=1196 cells_after_filter=1054 truncated=false bounds=51.5790,-0.5645,51.6610,-0.3382 filters=1 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.9 json_ms=0.6 total_ms=2.5 -2026-04-04T21:33:17.969720Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=96360 parallel=true cells_before_filter=1196 cells_after_filter=1054 truncated=false bounds=51.5790,-0.5645,51.6610,-0.3382 filters=1 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.8 json_ms=1.2 total_ms=3.0 -2026-04-04T21:33:24.018929Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=96360 parallel=true cells_before_filter=1196 cells_after_filter=1054 truncated=false bounds=51.5790,-0.5645,51.6610,-0.3382 filters=1 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=2.1 json_ms=0.9 total_ms=3.0 -2026-04-04T21:33:25.744941Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=300642 parallel=true cells_before_filter=3566 cells_after_filter=3422 truncated=false bounds=51.5368,-0.6873,51.7005,-0.2356 filters=1 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=5.0 json_ms=3.0 total_ms=7.9 -2026-04-04T21:33:26.049103Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=300642 filters=1 travel=0 total=221606 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" ms=3.1 -2026-04-04T21:33:27.027382Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=317371 parallel=true cells_before_filter=3513 cells_after_filter=3489 truncated=false bounds=51.5446,-0.6467,51.7082,-0.1950 filters=1 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=4.6 json_ms=2.8 total_ms=7.5 -2026-04-04T21:33:27.268262Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=317371 filters=1 travel=0 total=235468 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" ms=3.0 -2026-04-04T21:33:28.294642Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1496786 parallel=true cells_before_filter=3104 cells_after_filter=3097 truncated=false bounds=51.4283,-0.9955,51.7611,-0.0776 filters=1 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=9.9 json_ms=2.9 total_ms=12.8 -2026-04-04T21:33:28.674613Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1496786 filters=1 travel=0 total=1242092 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" ms=14.0 -2026-04-04T21:33:29.660478Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1652635 parallel=true cells_before_filter=3080 cells_after_filter=3080 truncated=false bounds=51.4538,-0.8821,51.7864,0.0358 filters=1 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=9.4 json_ms=2.2 total_ms=11.7 -2026-04-04T21:33:29.894294Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1652635 filters=1 travel=0 total=1408419 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" ms=15.9 -2026-04-04T21:33:30.802591Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3978898 parallel=true cells_before_filter=3037 cells_after_filter=3037 truncated=false bounds=51.2323,-1.6770,52.0479,0.5749 filters=1 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=18.8 json_ms=2.4 total_ms=21.3 -2026-04-04T21:33:31.014860Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3978898 filters=1 travel=0 total=3175557 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes" ms=38.4 -2026-04-04T21:33:31.720801Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3978898 parallel=true cells_before_filter=3037 cells_after_filter=3037 truncated=false bounds=51.2323,-1.6770,52.0479,0.5749 filters=2 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes;;Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=18.3 json_ms=2.3 total_ms=20.6 -2026-04-04T21:33:32.074454Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3978898 filters=2 travel=0 total=3175557 filters_raw="Property type:Detached|Terraced|Other|Flats/Maisonettes;;Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=55.7 -2026-04-04T21:33:33.284872Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3978898 parallel=true cells_before_filter=3055 cells_after_filter=3055 truncated=false bounds=51.2323,-1.6770,52.0479,0.5749 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=18.5 json_ms=2.3 total_ms=20.8 -2026-04-04T21:33:33.581183Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3978898 filters=1 travel=0 total=3978898 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=30.6 -2026-04-04T21:33:34.812002Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=8610789 parallel=true cells_before_filter=1928 cells_after_filter=1928 truncated=false bounds=50.6957,-2.7809,52.6612,2.6512 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.2 agg_ms=36.4 json_ms=1.7 total_ms=38.2 -2026-04-04T21:33:35.112097Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=8610789 filters=1 travel=0 total=8610789 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=70.0 -2026-04-04T21:33:37.073037Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14458756 parallel=true cells_before_filter=680 cells_after_filter=680 truncated=false bounds=47.7854,-13.1250,55.6261,8.6250 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=60.1 json_ms=0.6 total_ms=61.5 -2026-04-04T21:33:37.380857Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14458756 filters=1 travel=0 total=14458756 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=119.2 -2026-04-04T21:33:39.333761Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=6975809 parallel=true cells_before_filter=1435 cells_after_filter=1435 truncated=false bounds=50.6529,-2.1414,52.4436,2.7932 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=25.7 json_ms=1.1 total_ms=26.9 -2026-04-04T21:33:39.556716Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=6975809 filters=1 travel=0 total=6975809 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=54.8 -2026-04-04T21:33:40.318427Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7228971 parallel=true cells_before_filter=1502 cells_after_filter=1502 truncated=false bounds=50.6799,-2.2522,52.4696,2.6825 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=27.0 json_ms=1.2 total_ms=28.3 -2026-04-04T21:33:40.626590Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=7228971 filters=1 travel=0 total=7228971 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=55.8 -2026-04-04T21:33:41.103738Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3336426 parallel=true cells_before_filter=1702 cells_after_filter=1702 truncated=false bounds=51.2009,-0.7268,51.8159,0.9664 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=15.6 json_ms=1.5 total_ms=17.1 -2026-04-04T21:33:41.386105Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3336426 filters=1 travel=0 total=3336426 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=26.3 -2026-04-04T21:33:42.650652Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3449672 parallel=true cells_before_filter=1762 cells_after_filter=1762 truncated=false bounds=51.3044,-0.8347,51.9181,0.8585 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=15.3 json_ms=1.5 total_ms=16.8 -2026-04-04T21:33:42.856936Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3449672 filters=1 travel=0 total=3449672 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=27.9 -2026-04-04T21:33:43.509968Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4616617 parallel=true cells_before_filter=4112 cells_after_filter=4112 truncated=false bounds=51.1627,-1.3048,52.1586,1.4460 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=21.1 json_ms=3.5 total_ms=24.7 -2026-04-04T21:33:43.817241Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=4616617 filters=1 travel=0 total=4616617 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=36.5 -2026-04-04T21:33:44.410347Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4581448 parallel=true cells_before_filter=4161 cells_after_filter=4161 truncated=false bounds=51.0203,-1.3756,52.0193,1.3752 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=21.7 json_ms=3.5 total_ms=25.3 -2026-04-04T21:33:44.665899Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=4581448 filters=1 travel=0 total=4581448 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=36.6 -2026-04-04T21:33:46.098357Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=3163783 parallel=true cells_before_filter=7660 cells_after_filter=7660 truncated=false bounds=51.3468,-0.7578,51.8980,0.7634 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=19.5 json_ms=6.6 total_ms=26.1 -2026-04-04T21:33:47.102965Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=2876922 parallel=true cells_before_filter=7402 cells_after_filter=7402 truncated=false bounds=51.4036,-0.7471,51.9541,0.7741 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=18.4 json_ms=5.9 total_ms=24.3 -2026-04-04T21:33:47.643017Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=905425 parallel=true cells_before_filter=2623 cells_after_filter=2621 truncated=false bounds=51.5540,-0.3978,51.8679,0.4704 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=6.9 json_ms=1.9 total_ms=8.9 -2026-04-04T21:33:47.940483Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=905425 filters=1 travel=0 total=905425 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=7.1 -2026-04-04T21:33:54.308913Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=442152 parallel=true cells_before_filter=5520 cells_after_filter=5474 truncated=false bounds=51.5903,-0.3059,51.8377,0.3782 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=6.9 json_ms=5.4 total_ms=12.2 -2026-04-04T21:33:54.545434Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=442152 filters=1 travel=0 total=442152 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=3.6 -2026-04-04T21:34:00.609508Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=184887 parallel=true cells_before_filter=2446 cells_after_filter=2327 truncated=false bounds=51.6277,-0.1985,51.7855,0.2379 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=3.7 json_ms=2.1 total_ms=5.9 -2026-04-04T21:34:00.863349Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=184887 filters=1 travel=0 total=184887 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=1.6 -2026-04-04T21:34:01.584377Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=64255 parallel=true cells_before_filter=809 cells_after_filter=728 truncated=false bounds=51.6585,-0.1097,51.7423,0.1221 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.6 total_ms=1.9 -2026-04-04T21:34:01.819812Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=64255 filters=1 travel=0 total=64255 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=0.5 -2026-04-04T21:34:03.343292Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1202000 filters=1 travel=0 total=1202000 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=12.7 -2026-04-04T21:34:03.344856Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1202000 parallel=true cells_before_filter=2915 cells_after_filter=2915 truncated=false bounds=51.5245,-0.4309,51.8515,0.4729 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=10.6 json_ms=3.6 total_ms=14.2 -2026-04-04T21:34:10.096157Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=906401 parallel=true cells_before_filter=8776 cells_after_filter=8682 truncated=false bounds=51.5432,-0.3747,51.8268,0.4092 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=11.7 json_ms=7.8 total_ms=19.6 -2026-04-04T21:34:10.330836Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=906401 filters=1 travel=0 total=906401 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=6.9 -2026-04-04T21:34:11.754185Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=138 postcodes_after_filter=22 filtered_out=116 truncated=false bounds=51.648854,-0.025588,51.661937,0.010543 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 agg_ms=0.2 json_ms=0.1 total_ms=0.4 -2026-04-04T21:34:11.976400Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=2437 filters=1 travel=0 total=2437 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=0.0 -2026-04-04T21:34:12.414072Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=374 postcodes_after_filter=99 filtered_out=275 truncated=false bounds=51.646012,-0.033694,51.664773,0.018120 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 agg_ms=0.7 json_ms=0.5 total_ms=1.2 -2026-04-04T21:34:12.721667Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=6305 filters=1 travel=0 total=6305 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=0.1 -2026-04-04T21:34:17.223018Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=141611 parallel=true cells_before_filter=1256 cells_after_filter=1170 truncated=false bounds=51.6075,-0.1403,51.6940,0.0986 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=2.6 json_ms=1.1 total_ms=3.7 -2026-04-04T21:34:17.450476Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=141611 filters=1 travel=0 total=141611 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=1.3 -2026-04-04T21:34:18.366970Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1780314 parallel=true cells_before_filter=3128 cells_after_filter=3112 truncated=false bounds=51.4692,-0.5229,51.7989,0.3874 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=11.1 json_ms=2.7 total_ms=13.8 -2026-04-04T21:34:18.604580Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1780314 filters=1 travel=0 total=1780314 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=16.6 -2026-04-04T21:34:20.168537Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3790705 parallel=true cells_before_filter=2355 cells_after_filter=2355 truncated=false bounds=51.2527,-1.1190,51.9618,0.8373 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=17.5 json_ms=2.0 total_ms=19.6 -2026-04-04T21:34:20.433499Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3790705 filters=1 travel=0 total=3790705 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=31.2 -2026-04-04T21:34:21.487553Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4871923 parallel=true cells_before_filter=5125 cells_after_filter=5125 truncated=false bounds=51.0307,-1.7276,52.1276,1.2968 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=23.6 json_ms=4.2 total_ms=27.9 -2026-04-04T21:34:21.918633Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=5189397 parallel=true cells_before_filter=5986 cells_after_filter=5986 truncated=false bounds=50.9715,-1.8893,52.1715,1.4188 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=24.1 json_ms=4.6 total_ms=28.8 -2026-04-04T21:34:22.210585Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=5189397 filters=1 travel=0 total=5189397 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=40.0 -2026-04-04T21:34:24.872990Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=5057538 parallel=true cells_before_filter=5403 cells_after_filter=5403 truncated=false bounds=50.9449,-1.5349,52.1455,1.7732 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=28.5 json_ms=4.4 total_ms=33.0 -2026-04-04T21:34:25.122132Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=5057538 filters=1 travel=0 total=5057538 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=39.7 -2026-04-04T21:34:26.174410Z INFO property_map_server::routes::places: GET /api/places query="ig" results=7 scanned=3474 mode="-" ms=0.2 -2026-04-04T21:34:26.668635Z INFO property_map_server::routes::places: GET /api/places query="ig9" results=1 scanned=3474 mode="-" ms=0.3 -2026-04-04T21:34:27.725653Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=46658 parallel=false cells_before_filter=457 cells_after_filter=429 truncated=false bounds=51.6004,-0.0297,51.6512,0.1104 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.3 total_ms=1.6 -2026-04-04T21:34:28.031054Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=46658 filters=1 travel=0 total=46658 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=0.5 -2026-04-04T21:34:29.448006Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=222483 parallel=true cells_before_filter=1789 cells_after_filter=1649 truncated=false bounds=51.5788,-0.1022,51.6842,0.1888 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=3.2 json_ms=1.6 total_ms=4.7 -2026-04-04T21:34:29.741161Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=222483 filters=1 travel=0 total=222483 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=1.7 -2026-04-04T21:34:30.362629Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=517738 parallel=true cells_before_filter=4314 cells_after_filter=4280 truncated=false bounds=51.5510,-0.2095,51.7331,0.2932 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=6.2 json_ms=4.1 total_ms=10.3 -2026-04-04T21:34:30.603802Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=517738 filters=1 travel=0 total=517738 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=3.9 -2026-04-04T21:34:34.058158Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1911310 parallel=true cells_before_filter=3447 cells_after_filter=3446 truncated=false bounds=51.4520,-0.5384,51.8030,0.4304 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=11.0 json_ms=2.6 total_ms=13.6 -2026-04-04T21:34:34.314443Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1911310 filters=1 travel=0 total=1911310 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=15.1 -2026-04-04T21:34:34.778117Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1643034 parallel=true cells_before_filter=3333 cells_after_filter=3332 truncated=false bounds=51.4816,-0.4301,51.8324,0.5388 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=9.9 json_ms=2.6 total_ms=12.5 -2026-04-04T21:34:34.957632Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1643034 parallel=true cells_before_filter=3333 cells_after_filter=3332 truncated=false bounds=51.4818,-0.4301,51.8326,0.5388 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=10.4 json_ms=2.6 total_ms=13.0 -2026-04-04T21:34:35.489104Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1588958 parallel=true cells_before_filter=3277 cells_after_filter=3277 truncated=false bounds=51.4851,-0.3927,51.8359,0.5762 filters=1 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=10.0 json_ms=2.7 total_ms=12.7 -2026-04-04T21:34:35.798299Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1588958 filters=1 travel=0 total=1588958 filters_raw="Winning party:Labour|Conservative|Liberal Democrat|Reform UK|Green|Independent" ms=12.5 -2026-04-04T21:34:37.946631Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1588958 parallel=true cells_before_filter=1824 cells_after_filter=1824 truncated=false bounds=51.4851,-0.3927,51.8359,0.5762 filters=1 filters_raw="Winning party:Conservative|Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=7.3 json_ms=1.6 total_ms=8.9 -2026-04-04T21:34:38.247378Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1588958 parallel=true cells_before_filter=373 cells_after_filter=373 truncated=false bounds=51.4851,-0.3927,51.8359,0.5762 filters=1 filters_raw="Winning party:Liberal Democrat|Reform UK|Green|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=5.3 json_ms=0.3 total_ms=5.6 -2026-04-04T21:34:38.501167Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1588958 parallel=true cells_before_filter=373 cells_after_filter=373 truncated=false bounds=51.4851,-0.3927,51.8359,0.5762 filters=1 filters_raw="Winning party:Liberal Democrat|Reform UK|Independent" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=4.6 json_ms=0.3 total_ms=4.9 -2026-04-04T21:34:38.893838Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1588958 parallel=true cells_before_filter=351 cells_after_filter=351 truncated=false bounds=51.4851,-0.3927,51.8359,0.5762 filters=1 filters_raw="Winning party:Liberal Democrat|Reform UK" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=5.4 json_ms=0.3 total_ms=5.8 -2026-04-04T21:34:39.217363Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1588958 parallel=true cells_before_filter=114 cells_after_filter=114 truncated=false bounds=51.4851,-0.3927,51.8359,0.5762 filters=1 filters_raw="Winning party:Reform UK" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=4.5 json_ms=0.1 total_ms=4.6 -2026-04-04T21:34:39.481759Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1588958 filters=1 travel=0 total=23724 filters_raw="Winning party:Reform UK" ms=11.5 -2026-04-04T21:34:40.592521Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454412 parallel=true cells_before_filter=23 cells_after_filter=23 truncated=false bounds=47.6020,-13.0060,55.4246,8.6012 filters=1 filters_raw="Winning party:Reform UK" fields=1 travel_entries=0 grid_ms=1.0 agg_ms=45.5 json_ms=0.0 total_ms=46.6 -2026-04-04T21:34:40.993926Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14454412 filters=1 travel=0 total=137862 filters_raw="Winning party:Reform UK" ms=114.0 -2026-04-04T21:34:42.850563Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=8095554 parallel=true cells_before_filter=26 cells_after_filter=26 truncated=false bounds=50.7556,-3.0700,52.5569,1.9058 filters=1 filters_raw="Winning party:Reform UK" fields=1 travel_entries=0 grid_ms=0.2 agg_ms=19.2 json_ms=0.0 total_ms=19.4 -2026-04-04T21:34:44.626220Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1505290 parallel=true cells_before_filter=120 cells_after_filter=120 truncated=false bounds=51.4015,-0.1662,51.7257,0.7276 filters=1 filters_raw="Winning party:Reform UK" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=4.5 json_ms=0.1 total_ms=4.6 -2026-04-04T21:34:44.889173Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1505290 filters=1 travel=0 total=23927 filters_raw="Winning party:Reform UK" ms=11.4 -2026-04-04T21:34:46.351838Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1898446 parallel=true cells_before_filter=120 cells_after_filter=120 truncated=false bounds=51.3895,-0.2292,51.7440,0.7480 filters=1 filters_raw="Winning party:Reform UK" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=5.5 json_ms=0.1 total_ms=5.7 -2026-04-04T21:34:46.760113Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=2914623 parallel=true cells_before_filter=120 cells_after_filter=120 truncated=false bounds=51.3336,-0.5236,51.8294,0.8434 filters=1 filters_raw="Winning party:Reform UK" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=7.3 json_ms=0.1 total_ms=7.4 -2026-04-04T21:34:47.035753Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=2914623 filters=1 travel=0 total=23927 filters_raw="Winning party:Reform UK" ms=21.2 -2026-04-04T21:34:47.859550Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4532133 parallel=true cells_before_filter=91 cells_after_filter=91 truncated=false bounds=51.0793,-1.0447,52.0868,1.7337 filters=1 filters_raw="Winning party:Reform UK" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=11.2 json_ms=0.1 total_ms=11.3 -2026-04-04T21:34:48.218667Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=4532133 filters=1 travel=0 total=58449 filters_raw="Winning party:Reform UK" ms=32.9 -2026-04-04T21:34:51.181626Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=6177894 parallel=true cells_before_filter=91 cells_after_filter=91 truncated=false bounds=50.8101,-1.9583,52.3644,2.3284 filters=1 filters_raw="Winning party:Reform UK" fields=1 travel_entries=0 grid_ms=0.2 agg_ms=20.1 json_ms=0.1 total_ms=20.4 -2026-04-04T21:34:51.512056Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=6177894 filters=1 travel=0 total=58449 filters_raw="Winning party:Reform UK" ms=50.1 -2026-04-04T21:34:52.289263Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=5764353 parallel=true cells_before_filter=98 cells_after_filter=98 truncated=false bounds=50.9925,-1.6526,52.5407,2.6342 filters=1 filters_raw="Winning party:Reform UK" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=14.7 json_ms=0.1 total_ms=15.0 -2026-04-04T21:34:52.762463Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=10232695 parallel=true cells_before_filter=78 cells_after_filter=78 truncated=false bounds=50.3850,-3.6798,53.2070,4.1416 filters=1 filters_raw="Winning party:Reform UK" fields=1 travel_entries=0 grid_ms=0.3 agg_ms=31.9 json_ms=0.1 total_ms=32.3 -2026-04-04T21:34:53.421123Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13914967 parallel=true cells_before_filter=81 cells_after_filter=81 truncated=false bounds=49.0383,-8.0832,54.6194,7.4159 filters=1 filters_raw="Winning party:Reform UK" fields=1 travel_entries=0 grid_ms=0.6 agg_ms=42.3 json_ms=0.1 total_ms=43.0 -2026-04-04T21:34:53.790052Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=13914967 filters=1 travel=0 total=137862 filters_raw="Winning party:Reform UK" ms=111.1 -2026-04-04T21:34:54.688105Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=14443214 parallel=true cells_before_filter=81 cells_after_filter=81 truncated=false bounds=49.7372,-7.9159,55.2363,7.5832 filters=1 filters_raw="Winning party:Reform UK" fields=1 travel_entries=0 grid_ms=0.7 agg_ms=44.2 json_ms=0.1 total_ms=45.0 -2026-04-04T21:34:55.029873Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14443214 filters=1 travel=0 total=137862 filters_raw="Winning party:Reform UK" ms=113.5 -2026-04-04T21:34:55.623318Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=23 cells_after_filter=23 truncated=false bounds=48.4957,-13.1250,56.2224,8.6250 filters=1 filters_raw="Winning party:Reform UK" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=44.7 json_ms=0.0 total_ms=45.6 -2026-04-04T21:34:55.969917Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=137862 filters_raw="Winning party:Reform UK" ms=115.6 -2026-04-04T21:34:59.516657Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=23 cells_after_filter=23 truncated=false bounds=48.4957,-13.1250,56.2224,8.6250 filters=1 filters_raw="Winning party:Reform UK" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=45.7 json_ms=0.0 total_ms=46.6 -2026-04-04T21:34:59.866028Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=137862 filters_raw="Winning party:Reform UK" ms=111.8 -2026-04-04T21:35:02.024747Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=54 cells_after_filter=54 truncated=false bounds=48.4957,-13.1250,56.2224,8.6250 filters=1 filters_raw="Winning party:Reform UK|Green" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=44.1 json_ms=0.1 total_ms=45.0 -2026-04-04T21:35:02.405437Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=32 cells_after_filter=32 truncated=false bounds=48.4957,-13.1250,56.2224,8.6250 filters=1 filters_raw="Winning party:Green" fields=1 travel_entries=0 grid_ms=1.0 agg_ms=47.6 json_ms=0.1 total_ms=48.7 -2026-04-04T21:35:02.722751Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=104986 filters_raw="Winning party:Green" ms=114.5 -2026-04-04T21:35:04.481723Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=54 cells_after_filter=54 truncated=false bounds=48.4957,-13.1250,56.2224,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=44.7 json_ms=0.1 total_ms=45.7 -2026-04-04T21:35:04.786633Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=242848 filters_raw="Winning party:Green|Reform UK" ms=113.7 -2026-04-04T21:35:06.130310Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=292 cells_after_filter=292 truncated=false bounds=48.4957,-13.1250,56.2224,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Liberal Democrat" fields=1 travel_entries=0 grid_ms=1.1 agg_ms=51.8 json_ms=0.3 total_ms=53.1 -2026-04-04T21:35:06.425432Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=2115234 filters_raw="Winning party:Green|Reform UK|Liberal Democrat" ms=116.7 -2026-04-04T21:35:11.045354Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=9319504 parallel=true cells_before_filter=996 cells_after_filter=996 truncated=false bounds=50.5012,-5.1122,52.8404,1.3522 filters=1 filters_raw="Winning party:Green|Reform UK|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.2 agg_ms=28.3 json_ms=0.8 total_ms=29.4 -2026-04-04T21:35:11.363468Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=9319504 filters=1 travel=0 total=1764408 filters_raw="Winning party:Green|Reform UK|Liberal Democrat" ms=68.9 -2026-04-04T21:35:11.846675Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1551509 parallel=true cells_before_filter=1552 cells_after_filter=1552 truncated=false bounds=51.2115,-2.8795,52.0558,-0.5488 filters=1 filters_raw="Winning party:Green|Reform UK|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=7.5 json_ms=1.4 total_ms=8.9 -2026-04-04T21:35:12.154907Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1551509 filters=1 travel=0 total=623376 filters_raw="Winning party:Green|Reform UK|Liberal Democrat" ms=12.7 -2026-04-04T21:35:14.187993Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1551509 parallel=true cells_before_filter=2370 cells_after_filter=2370 truncated=false bounds=51.2115,-2.8795,52.0558,-0.5488 filters=1 filters_raw="Winning party:Green|Reform UK|Liberal Democrat|Conservative" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=9.2 json_ms=1.9 total_ms=11.1 -2026-04-04T21:35:14.470001Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1551509 filters=1 travel=0 total=836475 filters_raw="Winning party:Green|Reform UK|Liberal Democrat|Conservative" ms=12.1 -2026-04-04T21:35:15.118211Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1551509 parallel=true cells_before_filter=1552 cells_after_filter=1552 truncated=false bounds=51.2115,-2.8795,52.0558,-0.5488 filters=1 filters_raw="Winning party:Green|Reform UK|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=7.5 json_ms=1.2 total_ms=8.7 -2026-04-04T21:35:15.666065Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=292 cells_after_filter=292 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=48.8 json_ms=0.2 total_ms=49.9 -2026-04-04T21:35:15.979603Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14454856 filters=1 travel=0 total=2115234 filters_raw="Winning party:Green|Reform UK|Liberal Democrat" ms=118.5 -2026-04-04T21:35:17.441822Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=549 cells_after_filter=549 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Liberal Democrat|Conservative" fields=1 travel_entries=0 grid_ms=1.2 agg_ms=52.8 json_ms=0.4 total_ms=54.4 -2026-04-04T21:35:17.766179Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14454856 filters=1 travel=0 total=5320601 filters_raw="Winning party:Green|Reform UK|Liberal Democrat|Conservative" ms=117.0 -2026-04-04T21:35:18.645371Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=292 cells_after_filter=292 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=47.9 json_ms=0.2 total_ms=49.1 -2026-04-04T21:35:18.958197Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14454856 filters=1 travel=0 total=2115234 filters_raw="Winning party:Green|Reform UK|Liberal Democrat" ms=114.0 -2026-04-04T21:35:19.946778Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=292 cells_after_filter=292 truncated=false bounds=48.4054,-13.1250,56.1467,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Liberal Democrat" fields=1 travel_entries=0 grid_ms=1.2 agg_ms=48.4 json_ms=0.3 total_ms=49.8 -2026-04-04T21:35:20.690264Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=292 cells_after_filter=292 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Liberal Democrat" fields=1 travel_entries=0 grid_ms=1.1 agg_ms=48.9 json_ms=0.3 total_ms=50.3 -2026-04-04T21:35:20.953731Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=2115234 filters_raw="Winning party:Green|Reform UK|Liberal Democrat" ms=115.3 -2026-04-04T21:35:21.522823Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=549 cells_after_filter=549 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Liberal Democrat|Conservative" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=56.9 json_ms=0.5 total_ms=58.2 -2026-04-04T21:35:21.829962Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=5320601 filters_raw="Winning party:Green|Reform UK|Liberal Democrat|Conservative" ms=120.3 -2026-04-04T21:35:22.608721Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=292 cells_after_filter=292 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=47.6 json_ms=0.3 total_ms=48.7 -2026-04-04T21:35:22.913435Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=2115234 filters_raw="Winning party:Green|Reform UK|Liberal Democrat" ms=114.9 -2026-04-04T21:35:23.240102Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=593 cells_after_filter=593 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Liberal Democrat|Labour" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=62.8 json_ms=0.6 total_ms=64.4 -2026-04-04T21:35:23.549864Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=11132632 filters_raw="Winning party:Green|Reform UK|Liberal Democrat|Labour" ms=120.4 -2026-04-04T21:35:24.108518Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=292 cells_after_filter=292 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Liberal Democrat" fields=1 travel_entries=0 grid_ms=1.0 agg_ms=47.9 json_ms=0.3 total_ms=49.1 -2026-04-04T21:35:24.420390Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=2115234 filters_raw="Winning party:Green|Reform UK|Liberal Democrat" ms=115.6 -2026-04-04T21:35:24.742814Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=593 cells_after_filter=593 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Liberal Democrat|Labour" fields=1 travel_entries=0 grid_ms=1.0 agg_ms=61.7 json_ms=0.6 total_ms=63.3 -2026-04-04T21:35:25.069014Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=11132632 filters_raw="Winning party:Green|Reform UK|Liberal Democrat|Labour" ms=123.5 -2026-04-04T21:35:25.793100Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=292 cells_after_filter=292 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=49.6 json_ms=0.3 total_ms=50.8 -2026-04-04T21:35:26.104011Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=2115234 filters_raw="Winning party:Green|Reform UK|Liberal Democrat" ms=113.3 -2026-04-04T21:35:26.830822Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=54 cells_after_filter=54 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=47.0 json_ms=0.1 total_ms=47.9 -2026-04-04T21:35:27.090832Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=242848 filters_raw="Winning party:Green|Reform UK" ms=112.2 -2026-04-04T21:35:27.453146Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=462 cells_after_filter=462 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=55.2 json_ms=0.4 total_ms=56.4 -2026-04-04T21:35:27.749477Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=9260246 filters_raw="Winning party:Green|Reform UK|Labour" ms=117.6 -2026-04-04T21:35:28.931173Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=593 cells_after_filter=593 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=57.3 json_ms=0.8 total_ms=59.0 -2026-04-04T21:35:29.232496Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=11132632 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" ms=120.3 -2026-04-04T21:35:30.129697Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=462 cells_after_filter=462 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour" fields=1 travel_entries=0 grid_ms=1.0 agg_ms=59.4 json_ms=0.4 total_ms=60.7 -2026-04-04T21:35:30.439775Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=9260246 filters_raw="Winning party:Green|Reform UK|Labour" ms=117.5 -2026-04-04T21:35:30.967049Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=593 cells_after_filter=593 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=58.1 json_ms=0.5 total_ms=59.4 -2026-04-04T21:35:31.229150Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=11132632 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" ms=119.0 -2026-04-04T21:35:31.894064Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=462 cells_after_filter=462 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=60.8 json_ms=0.5 total_ms=62.2 -2026-04-04T21:35:32.211781Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=9260246 filters_raw="Winning party:Green|Reform UK|Labour" ms=120.2 -2026-04-04T21:35:32.677098Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=593 cells_after_filter=593 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=1.1 agg_ms=56.9 json_ms=0.5 total_ms=58.4 -2026-04-04T21:35:32.990170Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=11132632 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" ms=118.1 -2026-04-04T21:35:33.583218Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=462 cells_after_filter=462 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=57.1 json_ms=0.5 total_ms=58.4 -2026-04-04T21:35:33.902623Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=9260246 filters_raw="Winning party:Green|Reform UK|Labour" ms=119.0 -2026-04-04T21:35:34.284033Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=593 cells_after_filter=593 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=58.7 json_ms=0.5 total_ms=60.0 -2026-04-04T21:35:34.577920Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=11132632 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" ms=118.8 -2026-04-04T21:35:35.186152Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=462 cells_after_filter=462 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=58.3 json_ms=0.5 total_ms=59.6 -2026-04-04T21:35:35.487468Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=9260246 filters_raw="Winning party:Green|Reform UK|Labour" ms=120.2 -2026-04-04T21:35:35.871633Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=593 cells_after_filter=593 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=58.4 json_ms=0.5 total_ms=59.7 -2026-04-04T21:35:36.200053Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=11132632 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" ms=121.2 -2026-04-04T21:35:36.658644Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=462 cells_after_filter=462 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=61.8 json_ms=0.5 total_ms=63.2 -2026-04-04T21:35:36.966099Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=9260246 filters_raw="Winning party:Green|Reform UK|Labour" ms=122.5 -2026-04-04T21:35:37.225723Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=593 cells_after_filter=593 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=55.9 json_ms=0.5 total_ms=57.2 -2026-04-04T21:35:37.534988Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=11132632 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" ms=119.7 -2026-04-04T21:35:38.120966Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=462 cells_after_filter=462 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=58.9 json_ms=0.4 total_ms=60.2 -2026-04-04T21:35:38.443275Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=9260246 filters_raw="Winning party:Green|Reform UK|Labour" ms=123.5 -2026-04-04T21:35:38.629145Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=593 cells_after_filter=593 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=62.2 json_ms=0.6 total_ms=63.6 -2026-04-04T21:35:38.966481Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=11132632 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" ms=123.1 -2026-04-04T21:35:40.047096Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=462 cells_after_filter=462 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=61.0 json_ms=0.4 total_ms=62.2 -2026-04-04T21:35:40.326619Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=9260246 filters_raw="Winning party:Green|Reform UK|Labour" ms=125.0 -2026-04-04T21:35:40.822849Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=593 cells_after_filter=593 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=1.3 agg_ms=61.1 json_ms=0.6 total_ms=63.0 -2026-04-04T21:35:41.126778Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=11132632 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" ms=120.5 -2026-04-04T21:35:41.563604Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=462 cells_after_filter=462 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=56.3 json_ms=0.4 total_ms=57.5 -2026-04-04T21:35:41.896909Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=9260246 filters_raw="Winning party:Green|Reform UK|Labour" ms=121.4 -2026-04-04T21:35:42.206736Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=593 cells_after_filter=593 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=60.2 json_ms=0.5 total_ms=61.5 -2026-04-04T21:35:42.495066Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=11132632 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" ms=121.0 -2026-04-04T21:35:43.033375Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=462 cells_after_filter=462 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=57.5 json_ms=0.5 total_ms=58.8 -2026-04-04T21:35:43.329333Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=9260246 filters_raw="Winning party:Green|Reform UK|Labour" ms=117.1 -2026-04-04T21:35:43.592213Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=593 cells_after_filter=593 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=59.1 json_ms=0.5 total_ms=60.4 -2026-04-04T21:35:43.908952Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=11132632 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" ms=121.0 -2026-04-04T21:35:44.291828Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=462 cells_after_filter=462 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=58.5 json_ms=0.4 total_ms=59.8 -2026-04-04T21:35:44.604219Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=9260246 filters_raw="Winning party:Green|Reform UK|Labour" ms=122.0 -2026-04-04T21:35:44.908697Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=593 cells_after_filter=593 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=1.0 agg_ms=57.6 json_ms=0.5 total_ms=59.1 -2026-04-04T21:35:45.225069Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=11132632 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" ms=120.7 -2026-04-04T21:35:45.987762Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=462 cells_after_filter=462 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=57.5 json_ms=0.5 total_ms=58.8 -2026-04-04T21:35:46.330560Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=9260246 filters_raw="Winning party:Green|Reform UK|Labour" ms=116.4 -2026-04-04T21:35:46.647462Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=593 cells_after_filter=593 truncated=false bounds=48.8157,-13.1250,56.4908,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=56.5 json_ms=0.5 total_ms=57.8 -2026-04-04T21:35:46.956511Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=11132632 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" ms=120.2 -2026-04-04T21:36:01.330250Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=14045925 parallel=true cells_before_filter=2736 cells_after_filter=2736 truncated=false bounds=50.5747,-7.0728,55.0361,5.5864 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.5 agg_ms=56.6 json_ms=2.2 total_ms=59.4 -2026-04-04T21:36:01.627587Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14045925 filters=1 travel=0 total=10753259 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" ms=110.8 -2026-04-04T21:36:02.483250Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=14024616 parallel=true cells_before_filter=2741 cells_after_filter=2741 truncated=false bounds=50.5406,-7.0163,55.0053,5.6429 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.7 agg_ms=58.1 json_ms=2.4 total_ms=61.2 -2026-04-04T21:36:02.863125Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14024616 filters=1 travel=0 total=10727200 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" ms=116.5 -2026-04-04T21:36:03.343460Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=593 cells_after_filter=593 truncated=false bounds=49.1254,-10.9481,55.9051,8.1896 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=56.3 json_ms=0.5 total_ms=57.6 -2026-04-04T21:36:03.663597Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=11132632 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" ms=118.0 -2026-04-04T21:36:04.925580Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=593 cells_after_filter=593 truncated=false bounds=48.6940,-12.3567,56.0897,8.4713 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=56.8 json_ms=0.5 total_ms=58.2 -2026-04-04T21:36:05.221348Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=11132632 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" ms=120.1 -2026-04-04T21:36:10.972821Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14462999 parallel=true cells_before_filter=593 cells_after_filter=593 truncated=false bounds=49.9023,-12.3567,57.1098,8.4713 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.7 agg_ms=58.5 json_ms=0.6 total_ms=59.8 -2026-04-04T21:36:11.359802Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=593 cells_after_filter=593 truncated=false bounds=49.7028,-13.1250,57.2339,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.7 agg_ms=58.8 json_ms=0.4 total_ms=60.0 -2026-04-04T21:36:11.715332Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14463003 filters=1 travel=0 total=11132632 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" ms=117.6 -2026-04-04T21:36:12.077501Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=593 cells_after_filter=593 truncated=false bounds=48.7014,-13.1250,56.3950,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=55.6 json_ms=0.4 total_ms=56.8 -2026-04-04T21:36:12.485677Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=593 cells_after_filter=593 truncated=false bounds=48.6199,-13.1250,56.3267,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.8 agg_ms=57.6 json_ms=0.5 total_ms=58.9 -2026-04-04T21:36:13.330892Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=584 cells_after_filter=584 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=1 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" fields=1 travel_entries=0 grid_ms=0.9 agg_ms=56.4 json_ms=0.5 total_ms=57.8 -2026-04-04T21:36:13.571023Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14454856 filters=1 travel=0 total=11124485 filters_raw="Winning party:Green|Reform UK|Labour|Liberal Democrat" ms=119.0 -2026-04-04T21:36:14.414861Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=675 cells_after_filter=675 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.9 agg_ms=35.9 json_ms=0.3 total_ms=37.2 -2026-04-04T21:36:15.458618Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=684 cells_after_filter=684 truncated=false bounds=48.5455,-13.1250,56.2642,8.6250 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.8 agg_ms=32.0 json_ms=0.3 total_ms=33.2 -2026-04-04T21:36:18.806088Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14460268 parallel=true cells_before_filter=682 cells_after_filter=682 truncated=false bounds=50.0796,-13.1250,57.5491,8.6250 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.7 agg_ms=28.4 json_ms=0.3 total_ms=29.4 -2026-04-04T21:36:19.138865Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14454856 parallel=true cells_before_filter=675 cells_after_filter=675 truncated=false bounds=47.5926,-13.1250,55.4640,8.6250 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.9 agg_ms=30.5 json_ms=0.3 total_ms=31.7 -2026-04-04T21:36:20.866206Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14463003 parallel=true cells_before_filter=684 cells_after_filter=684 truncated=false bounds=48.1692,-13.1250,55.9484,8.6250 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.9 agg_ms=33.7 json_ms=0.3 total_ms=34.9 -2026-04-04T21:36:27.899368Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=505647 parallel=true cells_before_filter=1373 cells_after_filter=1373 truncated=false bounds=52.7519,-1.3296,53.3146,0.2738 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.5 json_ms=0.6 total_ms=3.2 -2026-04-04T21:36:28.441741Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4211261 parallel=true cells_before_filter=7635 cells_after_filter=7635 truncated=false bounds=52.2236,-2.7498,53.6408,1.2793 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=13.5 json_ms=4.0 total_ms=17.6 -2026-04-04T21:36:31.593251Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=2684196 parallel=true cells_before_filter=4951 cells_after_filter=4951 truncated=false bounds=52.3200,-2.3356,53.4389,0.8411 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=9.5 json_ms=2.8 total_ms=12.4 -2026-04-04T21:36:32.142315Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=751705 parallel=true cells_before_filter=4686 cells_after_filter=4684 truncated=false bounds=52.5028,-1.5483,53.0523,0.0081 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.2 json_ms=3.0 total_ms=9.2 -2026-04-04T21:36:32.814217Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=26001 parallel=false cells_before_filter=726 cells_after_filter=707 truncated=false bounds=52.6495,-1.0307,52.8422,-0.4854 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.6 json_ms=0.3 total_ms=0.9 -2026-04-04T21:36:34.145726Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=1144 parallel=false cells_before_filter=66 cells_after_filter=64 truncated=false bounds=52.7089,-0.8470,52.7761,-0.6569 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.1 json_ms=0.0 total_ms=0.1 -2026-04-04T21:36:35.017113Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=26 postcodes_after_filter=22 filtered_out=4 truncated=false bounds=52.736777,-0.782517,52.760060,-0.716610 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.0 json_ms=0.1 total_ms=0.1 -2026-04-04T21:36:35.799745Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=890 parallel=false cells_before_filter=56 cells_after_filter=55 truncated=false bounds=52.7149,-0.8332,52.7727,-0.6697 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.1 json_ms=0.0 total_ms=0.1 -2026-04-04T21:36:36.576034Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=8919434611bffff resolution=9 total_count=1 filters=0 filters_raw="-" ms=0.1 -2026-04-04T21:36:36.920228Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=720 parallel=false cells_before_filter=42 cells_after_filter=42 truncated=false bounds=52.7149,-0.8187,52.7727,-0.6841 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.0 json_ms=0.0 total_ms=0.1 -2026-04-04T21:36:42.802418Z INFO property_map_server::routes::properties: GET /api/hexagon-properties h3=8919434611bffff resolution=9 total=1 returned=1 offset=0 filters=0 filters_raw="-" ms=0.0 -2026-04-04T21:36:46.232229Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1560768 parallel=true cells_before_filter=3628 cells_after_filter=3628 truncated=false bounds=52.2728,-1.7523,53.3197,0.6909 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=6.3 json_ms=1.8 total_ms=8.2 -2026-04-04T21:36:48.381138Z INFO property_map_server::routes::places: GET /api/places query="ig" results=7 scanned=3474 mode="-" ms=0.3 -2026-04-04T21:36:48.742228Z INFO property_map_server::routes::places: GET /api/places query="ig19" results=0 scanned=3474 mode="-" ms=0.2 -2026-04-04T21:36:49.871398Z INFO property_map_server::routes::places: GET /api/places query="ig1" results=3 scanned=3474 mode="-" ms=0.2 -2026-04-04T21:36:50.251990Z INFO property_map_server::routes::places: GET /api/places query="ig10" results=1 scanned=3474 mode="-" ms=0.3 -2026-04-04T21:36:51.211015Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=22316 parallel=false cells_before_filter=312 cells_after_filter=295 truncated=false bounds=51.6230,-0.0048,51.6738,0.1353 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.4 json_ms=0.2 total_ms=0.6 -2026-04-04T21:36:55.672355Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=610 postcodes_after_filter=506 filtered_out=104 truncated=false bounds=51.637862,0.028422,51.658848,0.086372 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.5 json_ms=1.1 total_ms=1.5 -2026-04-04T21:36:56.790785Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=610 postcodes_after_filter=509 filtered_out=101 truncated=false bounds=51.637035,0.028361,51.658021,0.086311 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.5 json_ms=1.1 total_ms=1.7 -2026-04-04T21:36:57.821493Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=610 postcodes_after_filter=356 filtered_out=254 truncated=false bounds=51.639905,0.034227,51.655713,0.077878 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.6 json_ms=0.9 total_ms=1.5 -2026-04-04T21:37:00.813913Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=610 postcodes_after_filter=356 filtered_out=254 truncated=false bounds=51.639822,0.034227,51.655630,0.077878 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.5 json_ms=0.8 total_ms=1.3 -2026-04-04T21:37:02.512274Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=610 postcodes_after_filter=352 filtered_out=258 truncated=false bounds=51.639507,0.034134,51.655314,0.077784 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.5 json_ms=0.9 total_ms=1.4 -2026-04-04T21:37:03.022186Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=610 postcodes_after_filter=354 filtered_out=256 truncated=false bounds=51.639374,0.034077,51.655182,0.077728 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.6 json_ms=0.8 total_ms=1.5 -2026-04-04T21:37:03.518316Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=635 postcodes_after_filter=567 filtered_out=68 truncated=false bounds=51.634829,0.024776,51.658656,0.090571 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.6 json_ms=1.3 total_ms=1.9 -2026-04-04T21:37:25.033579Z INFO property_map_server::routes::places: GET /api/places query="hazel" results=1 scanned=3474 mode="-" ms=0.2 -2026-04-04T21:37:25.611549Z INFO property_map_server::routes::places: GET /api/places query="hazelwoo" results=0 scanned=3474 mode="-" ms=0.2 -2026-04-04T21:37:26.475382Z INFO property_map_server::routes::places: GET /api/places query="hazelwoos" results=0 scanned=3474 mode="-" ms=0.2 -2026-04-04T21:37:27.255510Z INFO property_map_server::routes::places: GET /api/places query="hazelwoo" results=0 scanned=3474 mode="-" ms=0.2 -2026-04-04T21:37:44.753537Z INFO property_map_server::routes::postcodes: GET /api/postcode/IG10 4ET postcode=IG10 4ET -2026-04-04T21:37:44.801429Z INFO property_map_server::routes::postcode_stats: GET /api/postcode-stats postcode=IG10 4ET total_count=34 filters=0 filters_raw="-" ms=0.1 -2026-04-04T21:37:44.991971Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=270 postcodes_after_filter=190 filtered_out=80 truncated=false bounds=51.637064,0.029855,51.649747,0.064874 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.3 json_ms=0.5 total_ms=0.7 -2026-04-04T21:37:45.230708Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=270 postcodes_after_filter=175 filtered_out=95 truncated=false bounds=51.637064,0.032945,51.649747,0.061784 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.3 json_ms=0.4 total_ms=0.7 -2026-04-04T21:37:46.268468Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=104 postcodes_after_filter=55 filtered_out=49 truncated=false bounds=51.640616,0.041801,51.645589,0.053110 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.1 json_ms=0.2 total_ms=0.3 -2026-04-04T21:37:46.787363Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=104 postcodes_after_filter=33 filtered_out=71 truncated=false bounds=51.641502,0.044011,51.644552,0.050946 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.2 json_ms=0.1 total_ms=0.3 -2026-04-04T21:37:47.397342Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=104 postcodes_after_filter=47 filtered_out=57 truncated=false bounds=51.640722,0.042979,51.644787,0.052221 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.2 json_ms=0.2 total_ms=0.4 -2026-04-04T21:37:48.401301Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=104 postcodes_after_filter=49 filtered_out=55 truncated=false bounds=51.640891,0.043035,51.644955,0.052277 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.2 json_ms=0.1 total_ms=0.3 -2026-04-04T21:37:50.590145Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=104 postcodes_after_filter=41 filtered_out=63 truncated=false bounds=51.640891,0.044155,51.644955,0.051157 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.2 json_ms=0.1 total_ms=0.3 -2026-04-04T21:38:47.273738Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=184 postcodes_after_filter=114 filtered_out=70 truncated=false bounds=51.638001,0.038846,51.648158,0.056343 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.2 json_ms=0.3 total_ms=0.5 -2026-04-04T21:38:52.326536Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=184 postcodes_after_filter=122 filtered_out=62 truncated=false bounds=51.637653,0.038206,51.648544,0.056968 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.3 json_ms=0.4 total_ms=0.6 -2026-04-04T21:40:14.216803Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=13255 parallel=false cells_before_filter=161 cells_after_filter=142 truncated=false bounds=51.6252,0.0173,51.6602,0.0776 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.4 json_ms=0.1 total_ms=0.6 -2026-04-04T21:40:15.138048Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=184 postcodes_after_filter=102 filtered_out=82 truncated=false bounds=51.638654,0.039881,51.647610,0.055309 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.3 json_ms=0.3 total_ms=0.6 -2026-04-04T21:40:15.714074Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=104 postcodes_after_filter=63 filtered_out=41 truncated=false bounds=51.640010,0.042149,51.646345,0.053063 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.2 json_ms=0.2 total_ms=0.4 -2026-04-04T21:40:19.720322Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=104 postcodes_after_filter=62 filtered_out=42 truncated=false bounds=51.640703,0.041865,51.647039,0.052779 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.2 json_ms=0.2 total_ms=0.4 -2026-04-04T21:40:23.570688Z INFO property_map_server::routes::postcode_stats: GET /api/postcode-stats postcode=IG10 4EN total_count=12 filters=0 filters_raw="-" ms=0.2 -2026-04-04T21:40:44.920616Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=184 postcodes_after_filter=108 filtered_out=76 truncated=false bounds=51.638187,0.037818,51.648260,0.055170 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.2 json_ms=0.3 total_ms=0.6 -2026-04-04T21:40:50.919051Z INFO property_map_server::routes::postcode_stats: GET /api/postcode-stats postcode=IG10 4RB total_count=24 filters=0 filters_raw="-" ms=0.1 -2026-04-04T21:41:21.790521Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=270 postcodes_after_filter=147 filtered_out=123 truncated=false bounds=51.638187,0.032588,51.648260,0.060400 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.3 json_ms=0.4 total_ms=0.7 -2026-04-04T21:42:31.670809Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T21:42:31.671934Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T21:42:33.670038Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=258378 parallel=true cells_before_filter=858 cells_after_filter=697 truncated=false bounds=51.4896,-0.2000,51.5404,-0.0600 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.0 json_ms=0.4 total_ms=2.5 -2026-04-04T21:42:55.340208Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da4823ffff resolution=9 total_count=627 filters=0 filters_raw="-" ms=0.3 -2026-04-04T21:42:55.647321Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=221163 parallel=true cells_before_filter=744 cells_after_filter=576 truncated=false bounds=51.4896,-0.1877,51.5404,-0.0723 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.4 total_ms=1.9 -2026-04-04T21:43:56.051389Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da4823ffff resolution=9 total_count=627 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.4 -2026-04-04T21:43:56.234038Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=221163 parallel=true cells_before_filter=744 cells_after_filter=576 truncated=false bounds=51.4896,-0.1877,51.5404,-0.0723 filters=1 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.0 json_ms=0.3 total_ms=2.3 -2026-04-04T21:43:56.635476Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=221163 filters=1 travel=0 total=221163 filters_raw="Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=1.7 -2026-04-04T21:43:56.944504Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da4823ffff resolution=9 total_count=627 filters=1 filters_raw="Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.4 -2026-04-04T21:43:57.159258Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=221163 parallel=true cells_before_filter=743 cells_after_filter=575 truncated=false bounds=51.4896,-0.1877,51.5404,-0.0723 filters=1 filters_raw="Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.3 json_ms=0.3 total_ms=2.6 -2026-04-04T21:43:57.431262Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=221163 filters=1 travel=0 total=220241 filters_raw="Property type:Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=1.7 -2026-04-04T21:43:57.658461Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da4823ffff resolution=9 total_count=84 filters=1 filters_raw="Property type:Semi-Detached|Terraced|Other" ms=0.2 -2026-04-04T21:43:57.805634Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=221163 parallel=true cells_before_filter=682 cells_after_filter=533 truncated=false bounds=51.4896,-0.1877,51.5404,-0.0723 filters=1 filters_raw="Property type:Semi-Detached|Terraced|Other" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.6 json_ms=0.3 total_ms=1.9 -2026-04-04T21:43:57.969849Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da4823ffff resolution=9 total_count=83 filters=1 filters_raw="Property type:Semi-Detached|Terraced" ms=0.2 -2026-04-04T21:43:58.126020Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=221163 parallel=true cells_before_filter=680 cells_after_filter=532 truncated=false bounds=51.4896,-0.1877,51.5404,-0.0723 filters=1 filters_raw="Property type:Semi-Detached|Terraced" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.7 json_ms=0.3 total_ms=2.0 -2026-04-04T21:43:58.374443Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=221163 filters=1 travel=0 total=25481 filters_raw="Property type:Semi-Detached|Terraced" ms=1.9 -2026-04-04T21:43:58.622285Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da4823ffff resolution=9 total_count=77 filters=1 filters_raw="Property type:Terraced" ms=0.2 -2026-04-04T21:43:58.794308Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=221163 parallel=true cells_before_filter=670 cells_after_filter=525 truncated=false bounds=51.4896,-0.1877,51.5404,-0.0723 filters=1 filters_raw="Property type:Terraced" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.6 json_ms=0.3 total_ms=2.0 -2026-04-04T21:43:59.022106Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=221163 filters=1 travel=0 total=22903 filters_raw="Property type:Terraced" ms=1.8 -2026-04-04T21:43:59.691928Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da4823ffff resolution=9 total_count=627 filters=0 filters_raw="-" ms=0.4 -2026-04-04T21:43:59.839226Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=221163 parallel=true cells_before_filter=744 cells_after_filter=576 truncated=false bounds=51.4896,-0.1877,51.5404,-0.0723 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.3 total_ms=1.7 -2026-04-04T21:44:01.485685Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da4823ffff resolution=9 total_count=627 filters=1 filters_raw="Leasehold/Freehold:Freehold|Leasehold" ms=0.4 -2026-04-04T21:44:01.652266Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=221163 parallel=true cells_before_filter=744 cells_after_filter=576 truncated=false bounds=51.4896,-0.1877,51.5404,-0.0723 filters=1 filters_raw="Leasehold/Freehold:Freehold|Leasehold" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.0 json_ms=0.3 total_ms=2.3 -2026-04-04T21:44:01.909500Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=221163 filters=1 travel=0 total=221161 filters_raw="Leasehold/Freehold:Freehold|Leasehold" ms=1.7 -2026-04-04T21:44:02.363804Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da4823ffff resolution=9 total_count=90 filters=1 filters_raw="Leasehold/Freehold:Freehold" ms=0.2 -2026-04-04T21:44:02.517400Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=221163 parallel=true cells_before_filter=658 cells_after_filter=512 truncated=false bounds=51.4896,-0.1877,51.5404,-0.0723 filters=1 filters_raw="Leasehold/Freehold:Freehold" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.7 json_ms=0.3 total_ms=2.0 -2026-04-04T21:44:02.809239Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=221163 filters=1 travel=0 total=26584 filters_raw="Leasehold/Freehold:Freehold" ms=1.8 -2026-04-04T21:44:03.654031Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da4823ffff resolution=9 total_count=627 filters=0 filters_raw="-" ms=0.3 -2026-04-04T21:44:03.830901Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=221163 parallel=true cells_before_filter=744 cells_after_filter=576 truncated=false bounds=51.4896,-0.1877,51.5404,-0.0723 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.6 json_ms=0.4 total_ms=1.9 -2026-04-04T21:44:05.327990Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T21:44:05.327995Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T21:44:05.653521Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=221163 parallel=true cells_before_filter=744 cells_after_filter=576 truncated=false bounds=51.4896,-0.1877,51.5404,-0.0723 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.4 json_ms=0.3 total_ms=1.7 -2026-04-04T21:44:09.499224Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=2245395 parallel=true cells_before_filter=3260 cells_after_filter=3255 truncated=false bounds=51.3484,-0.6803,51.7060,0.1309 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=7.1 json_ms=1.6 total_ms=8.7 -2026-04-04T21:44:10.795438Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=2798500 parallel=true cells_before_filter=5597 cells_after_filter=5597 truncated=false bounds=51.3064,-0.7967,51.7972,0.3170 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=9.8 json_ms=4.8 total_ms=14.6 -2026-04-04T21:44:45.224717Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=2798500 parallel=true cells_before_filter=5597 cells_after_filter=5597 truncated=false bounds=51.3064,-0.7967,51.7972,0.3170 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=15.3 json_ms=4.4 total_ms=19.7 -2026-04-04T21:44:46.515104Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4166588 parallel=true cells_before_filter=3186 cells_after_filter=3186 truncated=false bounds=51.0597,-1.2948,51.9687,0.7665 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=17.5 json_ms=2.7 total_ms=20.2 -2026-04-04T21:44:47.462054Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=8297017 parallel=true cells_before_filter=1913 cells_after_filter=1913 truncated=false bounds=50.1955,-3.0188,52.5575,2.3221 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.3 agg_ms=36.0 json_ms=1.5 total_ms=37.7 -2026-04-04T21:44:48.682744Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=10251727 parallel=true cells_before_filter=2772 cells_after_filter=2772 truncated=false bounds=49.3622,-4.6521,53.1081,3.7958 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.5 agg_ms=44.9 json_ms=2.0 total_ms=47.4 -2026-04-04T21:44:49.455807Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=176 postcodes_after_filter=32 filtered_out=144 truncated=false bounds=51.593016,-0.214608,51.595820,-0.208239 filters=0 filters_raw="-" fields=1 travel_entries=0 agg_ms=0.3 json_ms=0.1 total_ms=0.4 -2026-04-04T21:44:50.454096Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=78707 parallel=true cells_before_filter=608 cells_after_filter=581 truncated=false bounds=51.5639,-0.2738,51.6163,-0.1548 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.5 total_ms=1.8 -2026-04-04T21:44:50.821537Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=87502 parallel=true cells_before_filter=654 cells_after_filter=610 truncated=false bounds=51.5627,-0.2764,51.6172,-0.1525 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.6 total_ms=2.1 -2026-04-04T21:44:51.225834Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=599643 parallel=true cells_before_filter=3675 cells_after_filter=3591 truncated=false bounds=51.5100,-0.3835,51.6543,-0.0558 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=6.3 json_ms=3.1 total_ms=9.4 -2026-04-04T21:44:51.744606Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=2249943 parallel=true cells_before_filter=3371 cells_after_filter=3371 truncated=false bounds=51.3780,-0.6517,51.7471,0.1861 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=14.7 json_ms=2.5 total_ms=17.2 -2026-04-04T21:44:53.893048Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=25715 parallel=false cells_before_filter=294 cells_after_filter=249 truncated=false bounds=51.6458,-0.1957,51.6906,-0.0938 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.7 json_ms=0.2 total_ms=0.9 -2026-04-04T21:44:55.293351Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=16281 parallel=false cells_before_filter=249 cells_after_filter=201 truncated=false bounds=51.6563,-0.2141,51.7011,-0.1122 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.7 json_ms=0.2 total_ms=0.9 -2026-04-04T21:44:55.365850Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195db5d5bffff resolution=9 total_count=2 filters=0 filters_raw="-" ms=0.1 -2026-04-04T21:44:57.376117Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=51 postcodes_after_filter=21 filtered_out=30 truncated=false bounds=51.673118,-0.176167,51.689250,-0.139455 filters=0 filters_raw="-" fields=1 travel_entries=0 agg_ms=0.1 json_ms=0.1 total_ms=0.2 -2026-04-04T21:44:57.801580Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=51 postcodes_after_filter=32 filtered_out=19 truncated=false bounds=51.672484,-0.177597,51.689695,-0.138428 filters=0 filters_raw="-" fields=1 travel_entries=0 agg_ms=0.1 json_ms=0.1 total_ms=0.2 -2026-04-04T21:44:58.478708Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=5352 parallel=false cells_before_filter=108 cells_after_filter=107 truncated=false bounds=51.6623,-0.2004,51.6968,-0.1220 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.2 json_ms=0.1 total_ms=0.3 -2026-04-04T21:45:00.616153Z INFO property_map_server::routes::properties: GET /api/hexagon-properties h3=89195db5d5bffff resolution=9 total=2 returned=2 offset=0 filters=0 filters_raw="-" ms=0.1 -2026-04-04T21:46:14.691802Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195db580fffff resolution=9 total_count=20 filters=0 filters_raw="-" ms=0.1 -2026-04-04T21:46:21.544828Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=79231 parallel=true cells_before_filter=1063 cells_after_filter=967 truncated=false bounds=51.6395,-0.3226,51.7458,-0.0807 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.7 json_ms=0.8 total_ms=2.5 -2026-04-04T21:46:22.187720Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=654750 parallel=true cells_before_filter=2029 cells_after_filter=2028 truncated=false bounds=51.5772,-0.6558,51.8792,0.0322 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=4.9 json_ms=1.6 total_ms=6.5 -2026-04-04T21:46:23.376338Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=825079 parallel=true cells_before_filter=2567 cells_after_filter=2567 truncated=false bounds=51.5620,-0.7121,51.9056,0.0708 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=6.3 json_ms=2.1 total_ms=8.3 -2026-04-04T21:46:24.219315Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=643620 parallel=true cells_before_filter=1974 cells_after_filter=1964 truncated=false bounds=51.5794,-0.6476,51.8754,0.0266 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=4.7 json_ms=1.5 total_ms=6.1 -2026-04-04T21:46:25.273154Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=474082 parallel=true cells_before_filter=5676 cells_after_filter=5600 truncated=false bounds=51.5945,-0.5921,51.8494,-0.0115 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=7.1 json_ms=5.2 total_ms=12.3 -2026-04-04T21:46:33.950421Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T21:46:33.953241Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T21:46:34.627661Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T21:46:34.628653Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T21:46:36.070620Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T21:46:36.071602Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T21:46:36.780674Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T21:46:36.781649Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T21:46:37.900752Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T21:46:37.900800Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T21:47:01.665280Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=522404 parallel=true cells_before_filter=6462 cells_after_filter=6312 truncated=false bounds=51.5972,-0.6467,51.8466,0.0431 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.5 json_ms=3.4 total_ms=10.0 -2026-04-04T21:47:03.659452Z INFO property_map_server::routes::features: GET /api/features -2026-04-04T21:47:03.659455Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-04-04T21:47:03.895166Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=522404 parallel=true cells_before_filter=6462 cells_after_filter=6312 truncated=false bounds=51.5972,-0.6467,51.8466,0.0431 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.2 json_ms=3.5 total_ms=9.7 -2026-04-04T21:47:05.827262Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=522404 parallel=true cells_before_filter=6462 cells_after_filter=6312 truncated=false bounds=51.5972,-0.6467,51.8466,0.0431 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=8.7 json_ms=6.6 total_ms=15.3 -2026-04-04T21:47:08.484428Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=44327 parallel=false cells_before_filter=633 cells_after_filter=609 truncated=false bounds=51.6833,-0.4435,51.7559,-0.2428 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.2 json_ms=0.5 total_ms=1.7 -2026-04-04T21:47:09.293742Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=247 postcodes_after_filter=161 filtered_out=86 truncated=false bounds=51.712326,-0.374885,51.725168,-0.339368 filters=0 filters_raw="-" fields=1 travel_entries=0 agg_ms=0.3 json_ms=0.5 total_ms=0.7 -2026-04-04T21:47:10.166091Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=6899 parallel=false cells_before_filter=154 cells_after_filter=140 truncated=false bounds=51.7034,-0.3959,51.7346,-0.3098 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.2 json_ms=0.1 total_ms=0.4 -2026-04-04T21:52:05.887374Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T21:52:05.887553Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-04-04T21:52:05.887562Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-04-04T21:52:05.956667Z INFO property_map_server::data::property: Postcode features loaded rows=1262364 -2026-04-04T21:52:05.956678Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-04-04T21:52:08.252894Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203393 -2026-04-04T21:52:44.403359Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T21:52:44.403527Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-04-04T21:52:44.403535Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-04-04T21:52:44.467977Z INFO property_map_server::data::property: Postcode features loaded rows=1262364 -2026-04-04T21:52:44.467987Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-04-04T21:52:46.817826Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203393 -2026-04-04T21:54:19.810668Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T21:54:19.810815Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-04-04T21:54:19.810822Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-04-04T21:54:19.870046Z INFO property_map_server::data::property: Postcode features loaded rows=1262364 -2026-04-04T21:54:19.870055Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-04-04T21:54:22.182709Z INFO property_map_server::data::property: Properties joined with postcodes rows=15203393 -2026-04-04T22:00:48.160218Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T22:12:50.835405Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T22:13:40.021088Z INFO property_map_server: Prometheus metrics initialized -2026-04-04T22:14:09.136995Z INFO property_map_server: Prometheus metrics initialized diff --git a/server-rs/logs/server.log.2026-05-04 b/server-rs/logs/server.log.2026-05-04 deleted file mode 100644 index 1f641a0..0000000 --- a/server-rs/logs/server.log.2026-05-04 +++ /dev/null @@ -1,1315 +0,0 @@ -2026-05-04T12:51:54.299296Z INFO property_map_server: Prometheus metrics initialized -2026-05-04T12:51:54.299470Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-05-04T12:51:54.299479Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-05-04T12:51:54.399081Z INFO property_map_server::data::property: Postcode features loaded rows=1263786 -2026-05-04T12:51:54.399094Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-05-04T12:51:56.991776Z INFO property_map_server::data::property: Properties joined with postcodes rows=15268176 -2026-05-04T12:51:56.991808Z INFO property_map_server::data::property: Feature columns from config numeric=59 enums=6 total=65 -2026-05-04T12:51:58.691248Z INFO property_map_server::data::property: Combined data selected rows=15268176 -2026-05-04T12:51:58.880744Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-05-04T12:51:59.306116Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-05-04T12:52:00.487273Z INFO property_map_server::data::property: Extracting string columns -2026-05-04T12:52:01.932732Z INFO property_map_server::data::property: Building enum features -2026-05-04T12:52:03.150703Z INFO property_map_server::data::property: Extracting renovation history -2026-05-04T12:52:06.054483Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1833881 -2026-05-04T12:52:06.054492Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-05-04T12:52:06.955063Z INFO property_map_server::data::property: Building interned strings -2026-05-04T12:52:17.563487Z INFO property_map_server: Prometheus metrics initialized -2026-05-04T12:52:17.563649Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-05-04T12:52:17.563658Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-05-04T12:52:17.627898Z INFO property_map_server::data::property: Postcode features loaded rows=1263786 -2026-05-04T12:52:17.627907Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-05-04T12:52:19.921551Z INFO property_map_server::data::property: Properties joined with postcodes rows=15268176 -2026-05-04T12:52:19.921584Z INFO property_map_server::data::property: Feature columns from config numeric=59 enums=6 total=65 -2026-05-04T12:52:20.891880Z INFO property_map_server::data::property: Combined data selected rows=15268176 -2026-05-04T12:52:21.055515Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-05-04T12:52:21.442079Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-05-04T12:52:22.672016Z INFO property_map_server::data::property: Extracting string columns -2026-05-04T12:52:24.017673Z INFO property_map_server::data::property: Building enum features -2026-05-04T12:52:25.233745Z INFO property_map_server::data::property: Extracting renovation history -2026-05-04T12:52:28.250017Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1833881 -2026-05-04T12:52:28.250026Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-05-04T12:52:29.092973Z INFO property_map_server::data::property: Building interned strings -2026-05-04T12:52:34.404228Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-05-04T12:52:37.077568Z INFO property_map_server::data::property: Data loading complete -2026-05-04T12:52:38.149745Z INFO property_map_server: Property data loaded rows=15268176 features=65 enums=6 -2026-05-04T12:52:38.149754Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-05-04T12:52:38.244960Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-05-04T12:52:38.244968Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-05-04T12:52:38.611843Z INFO property_map_server::data::property: H3 precomputation complete (15268176 cells) -2026-05-04T12:52:38.611904Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-05-04T12:52:38.611916Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-05-04T12:52:38.644304Z INFO property_map_server::data::poi: Loaded 552015 POIs -2026-05-04T12:52:38.732308Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-05-04T12:52:38.732779Z INFO property_map_server::data::poi: POI data loading complete. -2026-05-04T12:52:38.762111Z INFO property_map_server: POI data loaded pois=552015 -2026-05-04T12:52:38.762119Z INFO property_map_server: Building POI spatial grid index -2026-05-04T12:52:38.766741Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-05-04T12:52:38.766756Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-05-04T12:52:38.776708Z INFO property_map_server::data::places: Loaded 3474 places -2026-05-04T12:52:38.777464Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-05-04T12:52:38.777525Z INFO property_map_server: Place data loaded places=3474 -2026-05-04T12:52:38.777546Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-05-04T12:52:38.777551Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-05-04T12:52:38.785369Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-05-04T12:52:45.693685Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-05-04T12:52:45.926784Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-05-04T12:52:46.062735Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-05-04T12:52:46.062790Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-05-04T12:52:46.063005Z INFO property_map_server: PMTiles loaded successfully -2026-05-04T12:52:46.098049Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-05-04T12:52:46.123884Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-05-04T12:52:46.124028Z INFO property_map_server: Precomputed features response groups=8 -2026-05-04T12:52:46.124046Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-05-04T12:52:46.284801Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-05-04T12:52:46.300423Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-05-04T12:52:46.333934Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-05-04T12:52:48.292798Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-05-04T12:52:48.307894Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-05-04T12:52:48.307946Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-05-04T12:52:48.307965Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-05-04T12:52:48.342530Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2753 -2026-05-04T12:52:48.364756Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=2753 -2026-05-04T12:52:48.384592Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=2753 -2026-05-04T12:52:48.438429Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=2752 -2026-05-04T12:52:48.450094Z INFO property_map_server: Travel time store loaded modes=4 -2026-05-04T12:52:48.450146Z INFO property_map_server: Precomputed AI filters system prompt -2026-05-04T12:52:53.687355Z INFO property_map_server: All memory pages locked (mlockall) -2026-05-04T12:52:53.687401Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-05-04T12:57:19.816376Z INFO property_map_server: Prometheus metrics initialized -2026-05-04T12:57:19.816536Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-05-04T12:57:19.816546Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-05-04T12:57:19.880067Z INFO property_map_server::data::property: Postcode features loaded rows=1263786 -2026-05-04T12:57:19.880079Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-05-04T12:57:22.177645Z INFO property_map_server::data::property: Properties joined with postcodes rows=15268176 -2026-05-04T12:57:22.177683Z INFO property_map_server::data::property: Feature columns from config numeric=59 enums=6 total=65 -2026-05-04T12:57:23.211707Z INFO property_map_server::data::property: Combined data selected rows=15268176 -2026-05-04T12:57:23.383759Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-05-04T12:57:23.757383Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-05-04T12:57:24.952119Z INFO property_map_server::data::property: Extracting string columns -2026-05-04T12:57:26.300478Z INFO property_map_server::data::property: Building enum features -2026-05-04T12:57:27.509253Z INFO property_map_server::data::property: Extracting renovation history -2026-05-04T12:57:30.316335Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1833881 -2026-05-04T12:57:30.316344Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-05-04T12:57:31.178507Z INFO property_map_server::data::property: Building interned strings -2026-05-04T12:57:36.575081Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-05-04T12:57:39.220220Z INFO property_map_server::data::property: Data loading complete -2026-05-04T12:57:40.328129Z INFO property_map_server: Property data loaded rows=15268176 features=65 enums=6 -2026-05-04T12:57:40.328139Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-05-04T12:57:40.422304Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-05-04T12:57:40.422311Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-05-04T12:57:40.805392Z INFO property_map_server::data::property: H3 precomputation complete (15268176 cells) -2026-05-04T12:57:40.805427Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-05-04T12:57:40.805439Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-05-04T12:57:40.823723Z INFO property_map_server::data::poi: Loaded 552015 POIs -2026-05-04T12:57:40.917268Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-05-04T12:57:40.917715Z INFO property_map_server::data::poi: POI data loading complete. -2026-05-04T12:57:40.952279Z INFO property_map_server: POI data loaded pois=552015 -2026-05-04T12:57:40.952287Z INFO property_map_server: Building POI spatial grid index -2026-05-04T12:57:40.957145Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-05-04T12:57:40.957160Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-05-04T12:57:40.957595Z INFO property_map_server::data::places: Loaded 3474 places -2026-05-04T12:57:40.958354Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-05-04T12:57:40.958419Z INFO property_map_server: Place data loaded places=3474 -2026-05-04T12:57:40.958428Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-05-04T12:57:40.958432Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-05-04T12:57:40.959290Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-05-04T12:57:47.597879Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-05-04T12:57:47.813811Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-05-04T12:57:47.950679Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-05-04T12:57:47.950734Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-05-04T12:57:47.950985Z INFO property_map_server: PMTiles loaded successfully -2026-05-04T12:57:47.985584Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-05-04T12:57:48.010443Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-05-04T12:57:48.010592Z INFO property_map_server: Precomputed features response groups=8 -2026-05-04T12:57:48.010604Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-05-04T12:57:48.060891Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-05-04T12:57:48.064222Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-05-04T12:57:48.067247Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-05-04T12:57:48.143703Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-05-04T12:57:48.147295Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-05-04T12:57:48.147320Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-05-04T12:57:48.147337Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-05-04T12:57:48.148793Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2753 -2026-05-04T12:57:48.149997Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=2753 -2026-05-04T12:57:48.151273Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=2753 -2026-05-04T12:57:48.152376Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=2752 -2026-05-04T12:57:48.152390Z INFO property_map_server: Travel time store loaded modes=4 -2026-05-04T12:57:48.152427Z INFO property_map_server: Precomputed AI filters system prompt -2026-05-04T12:57:49.549557Z INFO property_map_server: All memory pages locked (mlockall) -2026-05-04T12:57:49.549595Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-05-04T12:58:49.973793Z INFO property_map_server: Prometheus metrics initialized -2026-05-04T12:58:49.973949Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-05-04T12:58:49.973962Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-05-04T12:58:50.039388Z INFO property_map_server::data::property: Postcode features loaded rows=1263786 -2026-05-04T12:58:50.039399Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-05-04T12:58:52.337564Z INFO property_map_server::data::property: Properties joined with postcodes rows=15268176 -2026-05-04T12:58:52.337596Z INFO property_map_server::data::property: Feature columns from config numeric=59 enums=6 total=65 -2026-05-04T12:58:53.362969Z INFO property_map_server::data::property: Combined data selected rows=15268176 -2026-05-04T12:58:53.538150Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-05-04T12:58:53.918606Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-05-04T12:58:55.144004Z INFO property_map_server::data::property: Extracting string columns -2026-05-04T12:58:56.529429Z INFO property_map_server::data::property: Building enum features -2026-05-04T12:58:57.738180Z INFO property_map_server::data::property: Extracting renovation history -2026-05-04T12:59:00.591500Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1833881 -2026-05-04T12:59:00.591509Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-05-04T12:59:03.939893Z INFO property_map_server::data::property: Building interned strings -2026-05-04T12:59:30.967286Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-05-04T13:00:11.386277Z INFO property_map_server::data::property: Data loading complete -2026-05-04T13:00:12.601271Z INFO property_map_server: Property data loaded rows=15268176 features=65 enums=6 -2026-05-04T13:00:12.601280Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-05-04T13:00:12.710986Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-05-04T13:00:12.710997Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-05-04T13:00:13.132610Z INFO property_map_server::data::property: H3 precomputation complete (15268176 cells) -2026-05-04T13:00:13.132655Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-05-04T13:00:13.132670Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-05-04T13:00:13.152977Z INFO property_map_server::data::poi: Loaded 552015 POIs -2026-05-04T13:00:13.245086Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-05-04T13:00:13.245674Z INFO property_map_server::data::poi: POI data loading complete. -2026-05-04T13:00:13.279310Z INFO property_map_server: POI data loaded pois=552015 -2026-05-04T13:00:13.279321Z INFO property_map_server: Building POI spatial grid index -2026-05-04T13:00:13.284977Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-05-04T13:00:13.284986Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-05-04T13:00:13.285521Z INFO property_map_server::data::places: Loaded 3474 places -2026-05-04T13:00:13.286462Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-05-04T13:00:13.286526Z INFO property_map_server: Place data loaded places=3474 -2026-05-04T13:00:13.286539Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-05-04T13:00:13.286552Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-05-04T13:00:13.287401Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-05-04T13:00:20.403636Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-05-04T13:00:20.625816Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-05-04T13:00:20.763245Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-05-04T13:00:20.763311Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-05-04T13:00:20.763609Z INFO property_map_server: PMTiles loaded successfully -2026-05-04T13:00:20.798105Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-05-04T13:00:20.822916Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-05-04T13:00:20.823064Z INFO property_map_server: Precomputed features response groups=8 -2026-05-04T13:00:20.823077Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-05-04T13:00:20.870827Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-05-04T13:00:20.873223Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-05-04T13:00:20.877129Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-05-04T13:00:20.960856Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-05-04T13:00:20.967763Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-05-04T13:00:20.967783Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-05-04T13:00:20.967797Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-05-04T13:00:20.977614Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2753 -2026-05-04T13:00:20.996128Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=2753 -2026-05-04T13:00:21.005922Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=2753 -2026-05-04T13:00:21.026987Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=2752 -2026-05-04T13:00:21.027020Z INFO property_map_server: Travel time store loaded modes=4 -2026-05-04T13:00:21.027073Z INFO property_map_server: Precomputed AI filters system prompt -2026-05-04T13:00:22.476387Z INFO property_map_server: All memory pages locked (mlockall) -2026-05-04T13:00:22.476426Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-05-04T13:01:14.389067Z INFO property_map_server: Prometheus metrics initialized -2026-05-04T13:01:14.389217Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-05-04T13:01:14.389227Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-05-04T13:01:14.457100Z INFO property_map_server::data::property: Postcode features loaded rows=1263786 -2026-05-04T13:01:14.457110Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-05-04T13:01:16.821701Z INFO property_map_server::data::property: Properties joined with postcodes rows=15268176 -2026-05-04T13:01:16.821734Z INFO property_map_server::data::property: Feature columns from config numeric=59 enums=6 total=65 -2026-05-04T13:01:17.872493Z INFO property_map_server::data::property: Combined data selected rows=15268176 -2026-05-04T13:01:18.032071Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-05-04T13:01:18.435137Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-05-04T13:01:19.617346Z INFO property_map_server::data::property: Extracting string columns -2026-05-04T13:01:20.974878Z INFO property_map_server::data::property: Building enum features -2026-05-04T13:01:22.196822Z INFO property_map_server::data::property: Extracting renovation history -2026-05-04T13:01:24.899604Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1833881 -2026-05-04T13:01:24.899612Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-05-04T13:01:25.745555Z INFO property_map_server::data::property: Building interned strings -2026-05-04T13:01:31.018488Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-05-04T13:01:33.565804Z INFO property_map_server::data::property: Data loading complete -2026-05-04T13:01:34.682628Z INFO property_map_server: Property data loaded rows=15268176 features=65 enums=6 -2026-05-04T13:01:34.682637Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-05-04T13:01:34.775608Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-05-04T13:01:34.775617Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-05-04T13:01:35.156061Z INFO property_map_server::data::property: H3 precomputation complete (15268176 cells) -2026-05-04T13:01:35.156088Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-05-04T13:01:35.156094Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-05-04T13:01:35.178565Z INFO property_map_server::data::poi: Loaded 552015 POIs -2026-05-04T13:01:35.267553Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-05-04T13:01:35.268020Z INFO property_map_server::data::poi: POI data loading complete. -2026-05-04T13:01:35.300867Z INFO property_map_server: POI data loaded pois=552015 -2026-05-04T13:01:35.300875Z INFO property_map_server: Building POI spatial grid index -2026-05-04T13:01:35.305730Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-05-04T13:01:35.305745Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-05-04T13:01:35.306229Z INFO property_map_server::data::places: Loaded 3474 places -2026-05-04T13:01:35.307093Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-05-04T13:01:35.307151Z INFO property_map_server: Place data loaded places=3474 -2026-05-04T13:01:35.307162Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-05-04T13:01:35.307173Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-05-04T13:01:35.308228Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-05-04T13:01:41.949607Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-05-04T13:01:42.174459Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-05-04T13:01:42.313171Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-05-04T13:01:42.313227Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-05-04T13:01:42.313457Z INFO property_map_server: PMTiles loaded successfully -2026-05-04T13:01:42.349807Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-05-04T13:01:42.375184Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-05-04T13:01:42.375324Z INFO property_map_server: Precomputed features response groups=8 -2026-05-04T13:01:42.375336Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-05-04T13:01:42.421986Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-05-04T13:01:42.424365Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-05-04T13:01:42.428391Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-05-04T13:01:42.495005Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-05-04T13:01:42.498898Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-05-04T13:01:42.498918Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-05-04T13:01:42.498930Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-05-04T13:01:42.500404Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2753 -2026-05-04T13:01:42.501646Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=2753 -2026-05-04T13:01:42.503085Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=2753 -2026-05-04T13:01:42.504250Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=2752 -2026-05-04T13:01:42.504268Z INFO property_map_server: Travel time store loaded modes=4 -2026-05-04T13:01:42.504309Z INFO property_map_server: Precomputed AI filters system prompt -2026-05-04T13:01:43.910431Z INFO property_map_server: All memory pages locked (mlockall) -2026-05-04T13:01:43.910470Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-05-04T13:02:14.973154Z INFO property_map_server: Prometheus metrics initialized -2026-05-04T13:02:14.973328Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-05-04T13:02:14.973342Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-05-04T13:02:15.040480Z INFO property_map_server::data::property: Postcode features loaded rows=1263786 -2026-05-04T13:02:15.040490Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-05-04T13:02:17.364303Z INFO property_map_server::data::property: Properties joined with postcodes rows=15268176 -2026-05-04T13:02:17.364333Z INFO property_map_server::data::property: Feature columns from config numeric=59 enums=6 total=65 -2026-05-04T13:02:18.386739Z INFO property_map_server::data::property: Combined data selected rows=15268176 -2026-05-04T13:02:18.554113Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-05-04T13:02:18.936093Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-05-04T13:02:20.130714Z INFO property_map_server::data::property: Extracting string columns -2026-05-04T13:02:21.467247Z INFO property_map_server::data::property: Building enum features -2026-05-04T13:02:22.691007Z INFO property_map_server::data::property: Extracting renovation history -2026-05-04T13:02:25.522672Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1833881 -2026-05-04T13:02:25.522679Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-05-04T13:02:26.395689Z INFO property_map_server::data::property: Building interned strings -2026-05-04T13:02:32.134352Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-05-04T13:02:34.707433Z INFO property_map_server::data::property: Data loading complete -2026-05-04T13:02:35.788590Z INFO property_map_server: Property data loaded rows=15268176 features=65 enums=6 -2026-05-04T13:02:35.788599Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-05-04T13:02:35.885076Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-05-04T13:02:35.885084Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-05-04T13:02:36.272028Z INFO property_map_server::data::property: H3 precomputation complete (15268176 cells) -2026-05-04T13:02:36.272053Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-05-04T13:02:36.272060Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-05-04T13:02:36.289853Z INFO property_map_server::data::poi: Loaded 552015 POIs -2026-05-04T13:02:36.379352Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-05-04T13:02:36.379819Z INFO property_map_server::data::poi: POI data loading complete. -2026-05-04T13:02:36.410997Z INFO property_map_server: POI data loaded pois=552015 -2026-05-04T13:02:36.411003Z INFO property_map_server: Building POI spatial grid index -2026-05-04T13:02:36.415679Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-05-04T13:02:36.415686Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-05-04T13:02:36.416161Z INFO property_map_server::data::places: Loaded 3474 places -2026-05-04T13:02:36.416893Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-05-04T13:02:36.416947Z INFO property_map_server: Place data loaded places=3474 -2026-05-04T13:02:36.416957Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-05-04T13:02:36.416960Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-05-04T13:02:36.417749Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-05-04T13:02:42.887641Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-05-04T13:02:43.118870Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-05-04T13:02:43.258789Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-05-04T13:02:43.258842Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-05-04T13:02:43.259031Z INFO property_map_server: PMTiles loaded successfully -2026-05-04T13:02:43.294179Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-05-04T13:02:43.319055Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-05-04T13:02:43.319207Z INFO property_map_server: Precomputed features response groups=8 -2026-05-04T13:02:43.319218Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-05-04T13:02:43.365975Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-05-04T13:02:43.369699Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-05-04T13:02:43.372755Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-05-04T13:02:43.437831Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-05-04T13:02:43.441613Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-05-04T13:02:43.441643Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-05-04T13:02:43.441660Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-05-04T13:02:43.442974Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2753 -2026-05-04T13:02:43.444237Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=2753 -2026-05-04T13:02:43.445668Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=2753 -2026-05-04T13:02:43.446789Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=2752 -2026-05-04T13:02:43.446810Z INFO property_map_server: Travel time store loaded modes=4 -2026-05-04T13:02:43.446857Z INFO property_map_server: Precomputed AI filters system prompt -2026-05-04T13:02:44.885081Z INFO property_map_server: All memory pages locked (mlockall) -2026-05-04T13:02:44.885122Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-05-04T13:31:57.100493Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T13:31:57.100828Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T13:31:59.023461Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=112745 parallel=true cells_before_filter=400 cells_after_filter=353 truncated=false bounds=51.4958,-0.1756,51.5342,-0.0844 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.8 json_ms=0.2 total_ms=7.1 -2026-05-04T13:32:20.059848Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T13:32:20.059865Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T13:32:56.666128Z INFO property_map_server::routes::invites: Created invite code=9ih0z6ogb99k invite_type="referral" user_id=pyja9yzzek267px -2026-05-04T13:33:00.645401Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=112745 parallel=true cells_before_filter=400 cells_after_filter=353 truncated=false bounds=51.4958,-0.1756,51.5342,-0.0844 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=3.4 json_ms=0.2 total_ms=3.6 -2026-05-04T13:33:20.947504Z INFO property_map_server::routes::pois: GET /api/pois results=55 candidates=14100 categories=1 categories_raw="Tube station" ms=0.4 -2026-05-04T13:33:21.677477Z INFO property_map_server::routes::pois: GET /api/pois results=195 candidates=44919 categories=1 categories_raw="Tube station" ms=1.4 -2026-05-04T13:33:21.684537Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=781975 parallel=true cells_before_filter=3323 cells_after_filter=3192 truncated=false bounds=51.4529,-0.3082,51.5814,-0.0037 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.9 json_ms=2.5 total_ms=9.5 -2026-05-04T13:33:22.737902Z INFO property_map_server::routes::pois: GET /api/pois results=186 candidates=43941 categories=1 categories_raw="Tube station" ms=1.3 -2026-05-04T13:33:22.744579Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=806492 parallel=true cells_before_filter=3367 cells_after_filter=3166 truncated=false bounds=51.4225,-0.2849,51.5510,0.0196 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=7.1 json_ms=2.6 total_ms=9.7 -2026-05-04T13:33:24.238071Z INFO property_map_server::routes::pois: GET /api/pois results=39 candidates=9775 categories=1 categories_raw="Tube station" ms=0.5 -2026-05-04T13:33:24.239194Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=69481 parallel=true cells_before_filter=258 cells_after_filter=214 truncated=false bounds=51.4846,-0.1532,51.5125,-0.0870 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.6 json_ms=0.1 total_ms=1.7 -2026-05-04T13:33:25.453709Z INFO property_map_server::routes::pois: GET /api/pois results=51 candidates=13216 categories=1 categories_raw="Tube station" ms=0.5 -2026-05-04T13:33:25.454560Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=123645 parallel=true cells_before_filter=449 cells_after_filter=379 truncated=false bounds=51.4784,-0.1630,51.5189,-0.0671 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.2 total_ms=1.4 -2026-05-04T13:33:26.256653Z INFO property_map_server::routes::pois: GET /api/pois results=31 candidates=8863 categories=1 categories_raw="Tube station" ms=0.3 -2026-05-04T13:33:26.257597Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=110838 parallel=true cells_before_filter=408 cells_after_filter=376 truncated=false bounds=51.4613,-0.1627,51.5017,-0.0668 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.2 total_ms=1.3 -2026-05-04T13:33:26.822962Z INFO property_map_server::routes::pois: GET /api/pois results=207 candidates=46873 categories=1 categories_raw="Tube station" ms=1.2 -2026-05-04T13:33:26.831403Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=989280 parallel=true cells_before_filter=4956 cells_after_filter=4907 truncated=false bounds=51.3626,-0.3250,51.5274,0.0650 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.6 json_ms=3.0 total_ms=9.6 -2026-05-04T13:33:27.729697Z INFO property_map_server::routes::pois: GET /api/pois results=100 candidates=28949 categories=1 categories_raw="Tube station" ms=0.6 -2026-05-04T13:33:27.738332Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=889036 parallel=true cells_before_filter=4950 cells_after_filter=4753 truncated=false bounds=51.3356,-0.3152,51.5005,0.0747 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.9 json_ms=3.0 total_ms=9.9 -2026-05-04T13:33:29.270200Z INFO property_map_server::routes::pois: GET /api/pois results=64 candidates=21033 categories=1 categories_raw="Tube station" ms=0.6 -2026-05-04T13:33:29.277507Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=667630 parallel=true cells_before_filter=4479 cells_after_filter=4457 truncated=false bounds=51.3127,-0.3184,51.4777,0.0716 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=5.3 json_ms=2.6 total_ms=7.9 -2026-05-04T13:33:30.024877Z INFO property_map_server::routes::pois: GET /api/pois results=358 candidates=107186 categories=1 categories_raw="Tube station" ms=2.3 -2026-05-04T13:33:30.033631Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=2915619 parallel=true cells_before_filter=1275 cells_after_filter=1275 truncated=false bounds=51.0969,-0.7016,51.6494,0.6039 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=10.5 json_ms=0.6 total_ms=11.1 -2026-05-04T13:33:31.642663Z INFO property_map_server::routes::pois: GET /api/pois results=358 candidates=107463 categories=1 categories_raw="Tube station" ms=2.4 -2026-05-04T13:33:31.652754Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=2936405 parallel=true cells_before_filter=1281 cells_after_filter=1281 truncated=false bounds=51.0969,-0.7262,51.6494,0.5794 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=11.8 json_ms=0.6 total_ms=12.5 -2026-05-04T13:33:33.487141Z INFO property_map_server::routes::pois: GET /api/pois results=64 candidates=19203 categories=1 categories_raw="Tube station" ms=0.4 -2026-05-04T13:33:33.491396Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=588430 parallel=true cells_before_filter=3592 cells_after_filter=3486 truncated=false bounds=51.3313,-0.3022,51.4726,0.0319 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=4.4 json_ms=2.5 total_ms=6.9 -2026-05-04T13:33:34.526891Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=189132 parallel=true cells_before_filter=1092 cells_after_filter=1007 truncated=false bounds=51.3771,-0.2593,51.4478,-0.0919 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.8 json_ms=0.8 total_ms=2.6 -2026-05-04T13:33:34.527896Z INFO property_map_server::routes::pois: GET /api/pois results=28 candidates=5013 categories=1 categories_raw="Tube station" ms=0.1 -2026-05-04T13:33:35.231529Z INFO property_map_server::routes::pois: GET /api/pois results=19 candidates=3448 categories=1 categories_raw="Tube station" ms=0.1 -2026-05-04T13:33:35.231862Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=142421 parallel=true cells_before_filter=793 cells_after_filter=677 truncated=false bounds=51.3860,-0.2451,51.4420,-0.1126 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.6 total_ms=2.0 -2026-05-04T13:33:47.381036Z INFO property_map_server::routes::pois: GET /api/pois results=19 candidates=3448 categories=1 categories_raw="Tube station" ms=0.1 -2026-05-04T13:33:48.487044Z INFO property_map_server::routes::pois: GET /api/pois results=14 candidates=2073 categories=1 categories_raw="Tube station" ms=0.1 -2026-05-04T13:33:48.487895Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=64849 parallel=true cells_before_filter=359 cells_after_filter=328 truncated=false bounds=51.3976,-0.2209,51.4344,-0.1338 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.9 json_ms=0.2 total_ms=1.1 -2026-05-04T13:33:53.103234Z INFO property_map_server::routes::pois: GET /api/pois results=78 candidates=19629 categories=1 categories_raw="Tube station" ms=0.6 -2026-05-04T13:33:53.107969Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=572882 parallel=true cells_before_filter=2836 cells_after_filter=2667 truncated=false bounds=51.3746,-0.3342,51.4938,-0.0521 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=3.7 json_ms=1.7 total_ms=5.4 -2026-05-04T13:33:54.179347Z INFO property_map_server::routes::pois: GET /api/pois results=18 candidates=4852 categories=1 categories_raw="Tube station" ms=0.2 -2026-05-04T13:33:54.181576Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=197863 parallel=true cells_before_filter=974 cells_after_filter=892 truncated=false bounds=51.3948,-0.2606,51.4606,-0.1051 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.0 json_ms=0.5 total_ms=2.4 -2026-05-04T13:34:44.265941Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ada8cbffff resolution=9 total_count=540 filters=0 filters_raw="-" ms=0.3 -2026-05-04T13:34:44.642142Z INFO property_map_server::routes::pois: GET /api/pois results=18 candidates=3932 categories=1 categories_raw="Tube station" ms=0.2 -2026-05-04T13:34:44.643806Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=162297 parallel=true cells_before_filter=751 cells_after_filter=688 truncated=false bounds=51.3948,-0.2395,51.4606,-0.1262 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.5 total_ms=1.9 -2026-05-04T13:34:48.258461Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ada87bffff resolution=9 total_count=229 filters=0 filters_raw="-" ms=0.2 -2026-05-04T13:34:49.020563Z INFO property_map_server::routes::pois: GET /api/pois results=286 candidates=70330 categories=1 categories_raw="Tube station" ms=1.9 -2026-05-04T13:34:49.025229Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1763707 parallel=true cells_before_filter=2161 cells_after_filter=2149 truncated=false bounds=51.2559,-0.3872,51.5802,0.1718 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=5.6 json_ms=1.0 total_ms=6.6 -2026-05-04T13:34:49.575667Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194ad111fffff resolution=8 total_count=2002 filters=0 filters_raw="-" ms=0.8 -2026-05-04T13:34:50.242133Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194ad187fffff resolution=8 total_count=569 filters=0 filters_raw="-" ms=0.4 -2026-05-04T13:34:54.017928Z INFO property_map_server::routes::pois: GET /api/pois results=300 candidates=72466 categories=1 categories_raw="Tube station" ms=1.6 -2026-05-04T13:34:54.020899Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1794663 parallel=true cells_before_filter=2118 cells_after_filter=2115 truncated=false bounds=51.3074,-0.2905,51.6314,0.2686 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.1 json_ms=1.0 total_ms=7.2 -2026-05-04T13:34:54.333516Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194e69a3fffff resolution=8 total_count=1711 filters=0 filters_raw="-" ms=0.7 -2026-05-04T13:34:55.089268Z INFO property_map_server::routes::pois: GET /api/pois results=266 candidates=63697 categories=1 categories_raw="Tube station" ms=1.6 -2026-05-04T13:34:55.092662Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1457596 parallel=true cells_before_filter=1343 cells_after_filter=1342 truncated=false bounds=51.3604,-0.2378,51.6117,0.1960 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=4.3 json_ms=0.7 total_ms=5.0 -2026-05-04T13:34:56.107033Z INFO property_map_server::routes::pois: GET /api/pois results=188 candidates=41187 categories=1 categories_raw="Tube station" ms=1.1 -2026-05-04T13:34:56.112661Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=705465 parallel=true cells_before_filter=3119 cells_after_filter=2980 truncated=false bounds=51.4887,-0.2116,51.6142,0.0860 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=4.7 json_ms=2.0 total_ms=6.7 -2026-05-04T13:34:56.698120Z INFO property_map_server::routes::pois: GET /api/pois results=360 candidates=109676 categories=1 categories_raw="Tube station" ms=1.9 -2026-05-04T13:34:56.703955Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3083264 parallel=true cells_before_filter=1271 cells_after_filter=1271 truncated=false bounds=51.2423,-0.7308,51.7904,0.5684 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=7.0 json_ms=0.6 total_ms=7.7 -2026-05-04T13:34:57.830284Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194e6b2ffffff resolution=7 total_count=2731 filters=0 filters_raw="-" ms=1.0 -2026-05-04T13:34:58.217874Z INFO property_map_server::routes::pois: GET /api/pois results=357 candidates=98274 categories=1 categories_raw="Tube station" ms=1.8 -2026-05-04T13:34:58.222832Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=2686836 parallel=true cells_before_filter=947 cells_after_filter=947 truncated=false bounds=51.2423,-0.5547,51.7904,0.3922 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.1 json_ms=0.6 total_ms=6.7 -2026-05-04T13:35:02.847078Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ad2dffffff resolution=7 total_count=3860 filters=0 filters_raw="-" ms=1.4 -2026-05-04T13:35:04.267736Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ad5dffffff resolution=7 total_count=61 filters=0 filters_raw="-" ms=0.1 -2026-05-04T13:35:04.372806Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1796967 parallel=true cells_before_filter=952 cells_after_filter=952 truncated=false bounds=50.9769,-0.5547,51.5282,0.3922 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=8.1 json_ms=0.5 total_ms=8.6 -2026-05-04T13:35:05.286093Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ac0cffffff resolution=7 total_count=5360 filters=0 filters_raw="-" ms=2.4 -2026-05-04T13:35:05.938510Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ace4ffffff resolution=7 total_count=1840 filters=0 filters_raw="-" ms=0.7 -2026-05-04T13:35:07.024847Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194acd0ffffff resolution=7 total_count=27 filters=0 filters_raw="-" ms=0.1 -2026-05-04T13:35:07.127864Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1406489 parallel=true cells_before_filter=931 cells_after_filter=931 truncated=false bounds=50.9372,-0.7810,51.4889,0.1659 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=4.2 json_ms=0.5 total_ms=4.7 -2026-05-04T13:35:07.636723Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ace2ffffff resolution=7 total_count=4128 filters=0 filters_raw="-" ms=1.9 -2026-05-04T13:35:08.866720Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ace0ffffff resolution=8 total_count=0 filters=0 filters_raw="-" ms=0.1 -2026-05-04T13:35:08.976021Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=264483 parallel=true cells_before_filter=1335 cells_after_filter=1332 truncated=false bounds=51.0861,-0.4152,51.3619,0.0583 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.8 json_ms=0.9 total_ms=3.7 -2026-05-04T13:35:09.583460Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194ace27fffff resolution=8 total_count=487 filters=0 filters_raw="-" ms=0.3 -2026-05-04T13:35:10.431102Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=459958 parallel=true cells_before_filter=1971 cells_after_filter=1970 truncated=false bounds=51.0521,-0.4759,51.3966,0.1154 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.6 json_ms=1.2 total_ms=3.8 -2026-05-04T13:35:10.749788Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194ace59fffff resolution=8 total_count=16 filters=0 filters_raw="-" ms=0.1 -2026-05-04T13:35:12.459426Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1105405 parallel=true cells_before_filter=719 cells_after_filter=719 truncated=false bounds=50.9869,-0.6426,51.4692,0.1854 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=3.1 json_ms=0.3 total_ms=3.4 -2026-05-04T13:35:13.401256Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1381454 parallel=true cells_before_filter=729 cells_after_filter=729 truncated=false bounds=51.0125,-0.4626,51.4945,0.3654 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=3.4 json_ms=0.4 total_ms=3.8 -2026-05-04T13:35:14.699791Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194a896ffffff resolution=7 total_count=127 filters=0 filters_raw="-" ms=0.1 -2026-05-04T13:35:15.568561Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ac71ffffff resolution=7 total_count=1376 filters=0 filters_raw="-" ms=0.5 -2026-05-04T13:35:16.283030Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ac62ffffff resolution=7 total_count=121 filters=0 filters_raw="-" ms=0.1 -2026-05-04T13:35:16.911530Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ac60ffffff resolution=7 total_count=100 filters=0 filters_raw="-" ms=0.1 -2026-05-04T13:35:17.450345Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ad5cffffff resolution=7 total_count=846 filters=0 filters_raw="-" ms=0.4 -2026-05-04T13:35:18.186038Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ad59ffffff resolution=7 total_count=548 filters=0 filters_raw="-" ms=0.2 -2026-05-04T13:37:31.860156Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ad59ffffff resolution=7 total_count=368 filters=1 filters_raw="Number of bedrooms & living rooms:1:inf" ms=0.2 -2026-05-04T13:37:32.015897Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1381454 parallel=true cells_before_filter=728 cells_after_filter=728 truncated=false bounds=51.0125,-0.4626,51.4945,0.3654 filters=1 filters_raw="Number of bedrooms & living rooms:1:inf" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.2 json_ms=0.4 total_ms=6.5 -2026-05-04T13:37:32.289683Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1381454 filters=1 travel=0 total=992001 filters_raw="Number of bedrooms & living rooms:1:inf" ms=30.5 -2026-05-04T13:37:33.937517Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1381454 parallel=true cells_before_filter=729 cells_after_filter=729 truncated=false bounds=51.0125,-0.4626,51.4945,0.3654 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=6.5 json_ms=0.5 total_ms=7.1 -2026-05-04T13:37:34.067557Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ad59ffffff resolution=7 total_count=357 filters=1 filters_raw="Number of bedrooms & living rooms:3:inf" ms=0.2 -2026-05-04T13:37:34.223391Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1381454 parallel=true cells_before_filter=728 cells_after_filter=728 truncated=false bounds=51.0125,-0.4626,51.4945,0.3654 filters=1 filters_raw="Number of bedrooms & living rooms:3:inf" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.2 json_ms=0.4 total_ms=6.6 -2026-05-04T13:37:34.498149Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1381454 filters=1 travel=0 total=854740 filters_raw="Number of bedrooms & living rooms:3:inf" ms=30.2 -2026-05-04T13:37:35.039387Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1381454 parallel=true cells_before_filter=729 cells_after_filter=729 truncated=false bounds=51.0125,-0.4626,51.4945,0.3654 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=6.2 json_ms=0.5 total_ms=6.7 -2026-05-04T13:37:35.191323Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1381454 parallel=true cells_before_filter=728 cells_after_filter=728 truncated=false bounds=51.0125,-0.4626,51.4945,0.3654 filters=1 filters_raw="Number of bedrooms & living rooms:3:inf" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=6.3 json_ms=0.5 total_ms=6.8 -2026-05-04T13:37:36.028720Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ad59ffffff resolution=7 total_count=247 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.3 -2026-05-04T13:37:36.189180Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1381454 parallel=true cells_before_filter=718 cells_after_filter=718 truncated=false bounds=51.0125,-0.4626,51.4945,0.3654 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=5.8 json_ms=0.3 total_ms=6.1 -2026-05-04T13:37:36.460353Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1381454 filters=1 travel=0 total=635338 filters_raw="Number of bedrooms & living rooms:3:5" ms=30.7 -2026-05-04T13:37:39.273306Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1381454 parallel=true cells_before_filter=729 cells_after_filter=729 truncated=false bounds=51.0125,-0.4626,51.4945,0.3654 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=6.5 json_ms=0.6 total_ms=7.1 -2026-05-04T13:37:39.425398Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1381454 parallel=true cells_before_filter=718 cells_after_filter=718 truncated=false bounds=51.0125,-0.4626,51.4945,0.3654 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=6.5 json_ms=0.6 total_ms=7.1 -2026-05-04T13:37:39.509011Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ad59ffffff resolution=7 total_count=323 filters=1 filters_raw="Number of bedrooms & living rooms:3:7" ms=0.2 -2026-05-04T13:37:39.665177Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1381454 parallel=true cells_before_filter=727 cells_after_filter=727 truncated=false bounds=51.0125,-0.4626,51.4945,0.3654 filters=1 filters_raw="Number of bedrooms & living rooms:3:7" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.3 json_ms=0.3 total_ms=6.6 -2026-05-04T13:37:39.939347Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1381454 filters=1 travel=0 total=794448 filters_raw="Number of bedrooms & living rooms:3:7" ms=29.9 -2026-05-04T13:37:40.764623Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1381454 parallel=true cells_before_filter=729 cells_after_filter=729 truncated=false bounds=51.0125,-0.4626,51.4945,0.3654 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=6.3 json_ms=0.6 total_ms=6.9 -2026-05-04T13:37:40.917286Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1381454 parallel=true cells_before_filter=727 cells_after_filter=727 truncated=false bounds=51.0125,-0.4626,51.4945,0.3654 filters=1 filters_raw="Number of bedrooms & living rooms:3:7" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=6.1 json_ms=0.5 total_ms=6.6 -2026-05-04T13:37:41.269176Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ad59ffffff resolution=7 total_count=247 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.2 -2026-05-04T13:37:41.425942Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=1381454 parallel=true cells_before_filter=718 cells_after_filter=718 truncated=false bounds=51.0125,-0.4626,51.4945,0.3654 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.0 json_ms=0.3 total_ms=6.4 -2026-05-04T13:37:41.702843Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1381454 filters=1 travel=0 total=635338 filters_raw="Number of bedrooms & living rooms:3:5" ms=32.3 -2026-05-04T13:37:42.522234Z INFO property_map_server::routes::properties: GET /api/hexagon-properties h3=87194ad59ffffff resolution=7 total=247 returned=100 offset=0 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.6 -2026-05-04T13:39:09.200678Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194aceaffffff resolution=7 total_count=2184 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=1.0 -2026-05-04T13:39:11.646640Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ac28ffffff resolution=7 total_count=755 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.4 -2026-05-04T13:39:12.199523Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ac65ffffff resolution=7 total_count=8 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.1 -2026-05-04T13:39:12.679800Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ac6bffffff resolution=7 total_count=14 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.1 -2026-05-04T13:39:13.266201Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3475464 parallel=true cells_before_filter=2135 cells_after_filter=2135 truncated=false bounds=50.8928,-0.8841,51.7497,0.5899 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=22.7 json_ms=1.0 total_ms=23.8 -2026-05-04T13:39:14.173736Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194a950ffffff resolution=7 total_count=108 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.1 -2026-05-04T13:39:14.202953Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=2579526 parallel=true cells_before_filter=1773 cells_after_filter=1773 truncated=false bounds=50.8838,-0.2291,51.7409,1.2449 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=10.0 json_ms=0.8 total_ms=10.9 -2026-05-04T13:39:14.530599Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=2579526 filters=1 travel=0 total=1216179 filters_raw="Number of bedrooms & living rooms:3:5" ms=59.7 -2026-05-04T13:39:14.817290Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194a820ffffff resolution=7 total_count=3142 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=1.6 -2026-05-04T13:39:15.308971Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194a824ffffff resolution=7 total_count=2807 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=1.4 -2026-05-04T13:39:15.673631Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194a816ffffff resolution=7 total_count=13 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.1 -2026-05-04T13:39:16.123666Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194a990ffffff resolution=7 total_count=2 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.1 -2026-05-04T13:39:16.608403Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194e6ddffffff resolution=7 total_count=631 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.4 -2026-05-04T13:39:16.999707Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194a8b0ffffff resolution=7 total_count=87 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.1 -2026-05-04T13:39:18.417737Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=2578308 parallel=true cells_before_filter=1987 cells_after_filter=1987 truncated=false bounds=50.4409,-0.6832,51.5251,1.1682 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=11.4 json_ms=1.1 total_ms=12.6 -2026-05-04T13:39:18.730325Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=2578308 filters=1 travel=0 total=1189584 filters_raw="Number of bedrooms & living rooms:3:5" ms=61.6 -2026-05-04T13:39:18.734185Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194a150ffffff resolution=7 total_count=76 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.1 -2026-05-04T13:39:19.127321Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194a015ffffff resolution=7 total_count=17 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.1 -2026-05-04T13:39:19.574466Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194a18cffffff resolution=7 total_count=129 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.1 -2026-05-04T13:39:19.926142Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194a195ffffff resolution=7 total_count=2 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.0 -2026-05-04T13:39:21.425128Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ad2cffffff resolution=7 total_count=3286 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=1.5 -2026-05-04T13:39:21.516570Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4132595 parallel=true cells_before_filter=3124 cells_after_filter=3124 truncated=false bounds=51.0226,-0.7947,52.0934,1.0568 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=20.3 json_ms=1.4 total_ms=21.8 -2026-05-04T13:39:21.904543Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194e696ffffff resolution=7 total_count=4371 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=1.8 -2026-05-04T13:39:21.938806Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=4132595 filters=1 travel=0 total=1885406 filters_raw="Number of bedrooms & living rooms:3:5" ms=95.5 -2026-05-04T13:39:22.384233Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194e798ffffff resolution=7 total_count=24 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.1 -2026-05-04T13:39:22.815724Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194e7a5ffffff resolution=7 total_count=2 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.0 -2026-05-04T13:39:23.240875Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195db64ffffff resolution=7 total_count=109 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.1 -2026-05-04T13:39:23.649706Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195db0bffffff resolution=7 total_count=2098 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.9 -2026-05-04T13:39:24.061836Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195da28ffffff resolution=7 total_count=16 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.1 -2026-05-04T13:39:25.168849Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4166960 parallel=true cells_before_filter=3121 cells_after_filter=3121 truncated=false bounds=51.2743,-1.1936,52.3392,0.6578 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=21.3 json_ms=1.5 total_ms=22.8 -2026-05-04T13:39:25.523193Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195d840ffffff resolution=7 total_count=16 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.1 -2026-05-04T13:39:25.559888Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=4166960 filters=1 travel=0 total=1886566 filters_raw="Number of bedrooms & living rooms:3:5" ms=107.2 -2026-05-04T13:39:25.883105Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194e49effffff resolution=7 total_count=1693 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.8 -2026-05-04T13:39:26.218403Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195db86ffffff resolution=7 total_count=153 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.1 -2026-05-04T13:39:26.593638Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195db9affffff resolution=7 total_count=1 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.1 -2026-05-04T13:39:26.950436Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195da31ffffff resolution=7 total_count=1550 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.8 -2026-05-04T13:39:27.307613Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195db2bffffff resolution=7 total_count=1530 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.7 -2026-05-04T13:39:27.665871Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194e4f3ffffff resolution=7 total_count=70 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.1 -2026-05-04T13:39:28.032904Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194e48cffffff resolution=7 total_count=3 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.0 -2026-05-04T13:39:28.390308Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195d843ffffff resolution=7 total_count=1 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.1 -2026-05-04T13:39:28.762285Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195daa5ffffff resolution=7 total_count=1051 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.6 -2026-05-04T13:39:29.128858Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195daa8ffffff resolution=7 total_count=79 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.1 -2026-05-04T13:39:29.469791Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195d8cdffffff resolution=7 total_count=29 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.1 -2026-05-04T13:39:29.828391Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195d841ffffff resolution=7 total_count=7 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.0 -2026-05-04T13:39:30.228889Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194e496ffffff resolution=7 total_count=222 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.2 -2026-05-04T13:39:30.544702Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195db30ffffff resolution=7 total_count=2 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.0 -2026-05-04T13:39:30.896707Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195da06ffffff resolution=7 total_count=620 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.3 -2026-05-04T13:39:31.258359Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195dae3ffffff resolution=7 total_count=2023 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=1.4 -2026-05-04T13:39:31.691097Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195dad2ffffff resolution=7 total_count=219 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.2 -2026-05-04T13:39:32.025740Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195db80ffffff resolution=7 total_count=4 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.1 -2026-05-04T13:39:32.407765Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195d845ffffff resolution=7 total_count=4 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" ms=0.0 -2026-05-04T13:39:47.631460Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T13:39:47.633167Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T13:39:47.918971Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4166960 parallel=true cells_before_filter=3121 cells_after_filter=3121 truncated=false bounds=51.2743,-1.1936,52.3392,0.6578 filters=1 filters_raw="Number of bedrooms & living rooms:3:5" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=17.4 json_ms=1.6 total_ms=19.1 -2026-05-04T13:39:48.244646Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=4166960 filters=1 travel=0 total=1886566 filters_raw="Number of bedrooms & living rooms:3:5" ms=95.1 -2026-05-04T13:39:59.839762Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195d845ffffff resolution=7 total_count=4 filters=2 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=0.0 -2026-05-04T13:40:00.017768Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4166960 parallel=true cells_before_filter=3121 cells_after_filter=3121 truncated=false bounds=51.2743,-1.1936,52.3392,0.6578 filters=2 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=19.1 json_ms=1.7 total_ms=20.8 -2026-05-04T13:40:00.298024Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=4166960 filters=2 travel=0 total=1886566 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" ms=52.3 -2026-05-04T13:40:01.703148Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195d845ffffff resolution=7 total_count=4 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:12976.594:inf" ms=0.1 -2026-05-04T13:40:01.881414Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4166960 parallel=true cells_before_filter=3121 cells_after_filter=3121 truncated=false bounds=51.2743,-1.1936,52.3392,0.6578 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:12976.594:inf" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=25.3 json_ms=1.6 total_ms=26.9 -2026-05-04T13:40:02.159421Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=4166960 filters=3 travel=0 total=1886561 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:12976.594:inf" ms=56.6 -2026-05-04T13:40:02.954534Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4166960 parallel=true cells_before_filter=3121 cells_after_filter=3121 truncated=false bounds=51.2743,-1.1936,52.3392,0.6578 filters=2 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=17.4 json_ms=2.3 total_ms=19.8 -2026-05-04T13:40:03.092445Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=4166960 parallel=true cells_before_filter=3121 cells_after_filter=3121 truncated=false bounds=51.2743,-1.1936,52.3392,0.6578 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:12976.594:inf" fields=1 travel_entries=0 grid_ms=0.1 agg_ms=15.6 json_ms=2.2 total_ms=17.8 -2026-05-04T13:40:03.106688Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=87992 parallel=true cells_before_filter=310 cells_after_filter=260 truncated=false bounds=51.4958,-0.1632,51.5342,-0.0968 filters=2 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.9 json_ms=0.2 total_ms=1.1 -2026-05-04T13:40:03.183936Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195d845ffffff resolution=7 total_count=3 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:inf" ms=0.1 -2026-05-04T13:40:03.334999Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=87992 parallel=true cells_before_filter=310 cells_after_filter=260 truncated=false bounds=51.4958,-0.1632,51.5342,-0.0968 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:inf" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.2 total_ms=1.1 -2026-05-04T13:40:03.585769Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=87992 filters=3 travel=0 total=33277 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:inf" ms=1.3 -2026-05-04T13:40:05.930723Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=87992 parallel=true cells_before_filter=310 cells_after_filter=260 truncated=false bounds=51.4958,-0.1632,51.5342,-0.0968 filters=2 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.9 json_ms=0.2 total_ms=1.1 -2026-05-04T13:40:06.082869Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=87992 parallel=true cells_before_filter=310 cells_after_filter=260 truncated=false bounds=51.4958,-0.1632,51.5342,-0.0968 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:inf" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.2 total_ms=1.3 -2026-05-04T13:40:06.430051Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195d845ffffff resolution=7 total_count=3 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=0.0 -2026-05-04T13:40:06.581002Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=87992 parallel=true cells_before_filter=284 cells_after_filter=237 truncated=false bounds=51.4958,-0.1632,51.5342,-0.0968 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.1 total_ms=1.1 -2026-05-04T13:40:06.829845Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=87992 filters=3 travel=0 total=18406 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Semi-Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=1.3 -2026-05-04T13:40:07.011032Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87195d845ffffff resolution=7 total_count=2 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=0.0 -2026-05-04T13:40:07.164480Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=87992 parallel=true cells_before_filter=284 cells_after_filter=237 truncated=false bounds=51.4958,-0.1632,51.5342,-0.0968 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.1 total_ms=1.2 -2026-05-04T13:40:07.429768Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=87992 filters=3 travel=0 total=18395 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=1.7 -2026-05-04T13:40:08.503494Z INFO property_map_server::routes::properties: GET /api/hexagon-properties h3=87195d845ffffff resolution=7 total=2 returned=2 offset=0 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=0.0 -2026-05-04T13:40:12.659371Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da499bffff resolution=9 total_count=118 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=0.2 -2026-05-04T13:40:13.476085Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1289966 parallel=true cells_before_filter=1056 cells_after_filter=1056 truncated=false bounds=51.3961,-0.2920,51.6141,0.0845 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.0 json_ms=0.5 total_ms=6.6 -2026-05-04T13:40:13.809495Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1289966 filters=3 travel=0 total=460490 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=17.6 -2026-05-04T13:40:14.188080Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194ad025fffff resolution=8 total_count=301 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=0.3 -2026-05-04T13:40:15.349942Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3939570 parallel=true cells_before_filter=2481 cells_after_filter=2481 truncated=false bounds=51.1815,-0.9718,52.1304,0.6725 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=15.4 json_ms=1.4 total_ms=16.8 -2026-05-04T13:40:16.324644Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ac40ffffff resolution=7 total_count=1 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=0.1 -2026-05-04T13:40:16.403879Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3804218 parallel=true cells_before_filter=2508 cells_after_filter=2508 truncated=false bounds=50.8745,-0.8892,51.8297,0.7551 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=15.5 json_ms=1.2 total_ms=16.8 -2026-05-04T13:40:16.756860Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3804218 filters=3 travel=0 total=1157117 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=60.5 -2026-05-04T13:40:17.073715Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194acedffffff resolution=7 total_count=8 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=0.0 -2026-05-04T13:40:17.507764Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194acd1ffffff resolution=7 total_count=6 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=0.1 -2026-05-04T13:40:17.961358Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194a98affffff resolution=7 total_count=353 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=0.2 -2026-05-04T13:40:18.854000Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=13734545 parallel=true cells_before_filter=591 cells_after_filter=591 truncated=false bounds=48.9101,-6.4599,54.2741,2.8361 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.8 agg_ms=78.1 json_ms=0.3 total_ms=79.2 -2026-05-04T13:40:19.292838Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=13734545 filters=3 travel=0 total=2626682 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=250.9 -2026-05-04T13:40:20.742956Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=4941995 parallel=true cells_before_filter=730 cells_after_filter=730 truncated=false bounds=49.9329,-2.0335,51.7180,1.0049 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=18.2 json_ms=0.3 total_ms=18.6 -2026-05-04T13:40:21.052172Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=4941995 filters=3 travel=0 total=1437556 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=77.1 -2026-05-04T13:40:21.737715Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14525100 parallel=true cells_before_filter=680 cells_after_filter=680 truncated=false bounds=47.6440,-11.8151,57.1675,5.0515 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=1.2 agg_ms=77.4 json_ms=0.4 total_ms=79.1 -2026-05-04T13:40:22.311664Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=1351447 parallel=true cells_before_filter=330 cells_after_filter=330 truncated=false bounds=50.0785,-1.3960,51.3374,0.7412 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=5.2 json_ms=0.2 total_ms=5.4 -2026-05-04T13:40:22.577284Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1351447 filters=3 travel=0 total=341191 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=21.2 -2026-05-04T13:40:23.304030Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=86194a0afffffff resolution=6 total_count=79 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=0.1 -2026-05-04T13:40:23.980370Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=5962106 parallel=true cells_before_filter=1067 cells_after_filter=1067 truncated=false bounds=49.1089,-2.9215,51.8051,1.6327 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.3 agg_ms=20.8 json_ms=0.5 total_ms=21.6 -2026-05-04T13:40:24.305533Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=86194a407ffffff resolution=6 total_count=134 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=0.2 -2026-05-04T13:40:24.337106Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=5962106 filters=3 travel=0 total=1685745 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=93.5 -2026-05-04T13:40:25.663676Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=10634700 parallel=true cells_before_filter=2866 cells_after_filter=2866 truncated=false bounds=49.1437,-4.4067,53.2985,2.7308 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.4 agg_ms=60.1 json_ms=1.3 total_ms=61.8 -2026-05-04T13:40:26.085658Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=10634700 filters=3 travel=0 total=2336049 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=191.2 -2026-05-04T13:40:26.297051Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=86195d3afffffff resolution=6 total_count=1090 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=0.6 -2026-05-04T13:40:26.829321Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=8619598afffffff resolution=6 total_count=21 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=0.1 -2026-05-04T13:40:27.681730Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14525100 parallel=true cells_before_filter=680 cells_after_filter=680 truncated=false bounds=47.2724,-10.5960,56.7831,6.1034 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=1.0 agg_ms=80.9 json_ms=0.3 total_ms=82.2 -2026-05-04T13:40:27.980107Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=8519416ffffffff resolution=5 total_count=650 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=0.5 -2026-05-04T13:40:28.172748Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14525100 filters=3 travel=0 total=2674851 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=264.9 -2026-05-04T13:40:30.144887Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=13393037 parallel=true cells_before_filter=3371 cells_after_filter=3371 truncated=false bounds=50.2480,-4.5290,53.9724,1.9951 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.3 agg_ms=67.4 json_ms=1.5 total_ms=69.2 -2026-05-04T13:40:30.684577Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=5783676 parallel=true cells_before_filter=1023 cells_after_filter=1023 truncated=false bounds=51.3248,-2.2406,52.8598,0.4456 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=19.7 json_ms=0.5 total_ms=20.3 -2026-05-04T13:40:31.018801Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=5783676 filters=3 travel=0 total=1368317 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=103.7 -2026-05-04T13:40:33.223439Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=5574893 parallel=true cells_before_filter=1047 cells_after_filter=1047 truncated=false bounds=50.9530,-1.8661,52.5005,0.8201 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=20.2 json_ms=0.5 total_ms=20.8 -2026-05-04T13:40:33.511242Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=5574893 filters=3 travel=0 total=1474666 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=89.6 -2026-05-04T13:40:33.823361Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7718491 parallel=true cells_before_filter=1606 cells_after_filter=1606 truncated=false bounds=50.7823,-2.2768,52.7453,1.1335 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=27.3 json_ms=0.7 total_ms=28.2 -2026-05-04T13:40:34.181037Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=7718491 filters=3 travel=0 total=1855340 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=130.1 -2026-05-04T13:40:35.169083Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=5 rows=14525100 parallel=true cells_before_filter=680 cells_after_filter=680 truncated=false bounds=48.3706,-7.9280,55.9761,5.4460 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.9 agg_ms=74.7 json_ms=0.3 total_ms=75.9 -2026-05-04T13:40:35.614995Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=14525100 filters=3 travel=0 total=2674851 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=267.4 -2026-05-04T13:40:36.796318Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=6805756 parallel=true cells_before_filter=1441 cells_after_filter=1441 truncated=false bounds=50.9200,-2.0466,52.7662,1.1662 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.1 agg_ms=40.3 json_ms=0.7 total_ms=41.1 -2026-05-04T13:40:37.128382Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=6805756 filters=3 travel=0 total=1645309 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=124.6 -2026-05-04T13:40:37.594282Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=6 rows=7163519 parallel=true cells_before_filter=1554 cells_after_filter=1554 truncated=false bounds=50.8883,-2.1219,52.8088,1.2209 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.2 agg_ms=40.7 json_ms=0.7 total_ms=41.5 -2026-05-04T13:40:37.941673Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=7163519 filters=3 travel=0 total=1699669 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=132.3 -2026-05-04T13:40:38.211400Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=86194e40fffffff resolution=6 total_count=38 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=0.1 -2026-05-04T13:40:39.150774Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=3135418 parallel=true cells_before_filter=1605 cells_after_filter=1605 truncated=false bounds=51.3661,-0.7240,52.1190,0.5831 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=12.4 json_ms=0.8 total_ms=13.1 -2026-05-04T13:40:39.435136Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=3135418 filters=3 travel=0 total=989196 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=46.3 -2026-05-04T13:40:40.347500Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=513089 parallel=true cells_before_filter=1559 cells_after_filter=1559 truncated=false bounds=51.5957,-0.3062,51.9709,0.3457 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=3.3 json_ms=0.7 total_ms=4.0 -2026-05-04T13:40:40.857293Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=240788 parallel=true cells_before_filter=1227 cells_after_filter=1227 truncated=false bounds=51.6825,-0.3062,52.0569,0.3457 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.9 json_ms=0.7 total_ms=3.6 -2026-05-04T13:40:41.166908Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=240788 filters=3 travel=0 total=65837 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=4.1 -2026-05-04T13:40:41.719333Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=857108 parallel=true cells_before_filter=864 cells_after_filter=864 truncated=false bounds=51.5924,-0.4989,52.1451,0.4634 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=4.6 json_ms=0.4 total_ms=5.1 -2026-05-04T13:40:41.979157Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=857108 filters=3 travel=0 total=248089 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=13.6 -2026-05-04T13:40:43.528033Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194e408ffffff resolution=7 total_count=12 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=0.2 -2026-05-04T13:40:47.419735Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=362988 parallel=true cells_before_filter=1600 cells_after_filter=1599 truncated=false bounds=51.6458,-0.3699,52.0647,0.3591 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=3.4 json_ms=1.3 total_ms=4.7 -2026-05-04T13:40:47.680017Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=362988 filters=3 travel=0 total=103811 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=6.1 -2026-05-04T13:40:47.861833Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194e4511fffff resolution=8 total_count=20 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" ms=0.3 -2026-05-04T13:42:45.803861Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194e4511fffff resolution=8 total_count=20 filters=4 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000;;Number of parks within 1km:0:261" ms=0.1 -2026-05-04T13:42:45.957776Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=362988 parallel=true cells_before_filter=1600 cells_after_filter=1599 truncated=false bounds=51.6458,-0.3699,52.0647,0.3591 filters=4 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000;;Number of parks within 1km:0:261" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=3.0 json_ms=0.8 total_ms=3.8 -2026-05-04T13:42:46.210140Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=362988 filters=4 travel=0 total=103811 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000;;Number of parks within 1km:0:261" ms=6.4 -2026-05-04T13:42:48.724320Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=362988 parallel=true cells_before_filter=1600 cells_after_filter=1599 truncated=false bounds=51.6458,-0.3699,52.0647,0.3591 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=3.0 json_ms=1.0 total_ms=4.0 -2026-05-04T13:42:48.878730Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=362988 parallel=true cells_before_filter=1600 cells_after_filter=1599 truncated=false bounds=51.6458,-0.3699,52.0647,0.3591 filters=4 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000;;Number of parks within 1km:0:261" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=3.4 json_ms=1.0 total_ms=4.4 -2026-05-04T13:42:50.280108Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=362988 parallel=true cells_before_filter=1600 cells_after_filter=1599 truncated=false bounds=51.6458,-0.3699,52.0647,0.3591 filters=4 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000;;Number of parks within 1km:0:261" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=3.0 json_ms=0.7 total_ms=3.8 -2026-05-04T13:42:50.527447Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=362988 filters=4 travel=0 total=103811 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000;;Number of parks within 1km:0:261" ms=5.9 -2026-05-04T13:42:51.138668Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=11609 parallel=false cells_before_filter=161 cells_after_filter=150 truncated=false bounds=51.8485,-0.1783,51.9152,-0.0621 filters=4 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000;;Number of parks within 1km:0:261" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.4 json_ms=0.1 total_ms=0.5 -2026-05-04T13:42:51.437032Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=11609 filters=4 travel=0 total=4346 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000;;Number of parks within 1km:0:261" ms=0.3 -2026-05-04T13:42:52.248121Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194e4d643ffff resolution=9 total_count=1 filters=4 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000;;Number of parks within 1km:0:261" ms=0.0 -2026-05-04T13:42:52.967593Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=19 postcodes_after_filter=5 filtered_out=14 truncated=false bounds=51.876437,-0.153837,51.888408,-0.132989 filters=4 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000;;Number of parks within 1km:0:261" fields=0 travel_entries=0 agg_ms=0.0 json_ms=0.0 total_ms=0.1 -2026-05-04T13:42:54.208037Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=19 postcodes_after_filter=9 filtered_out=10 truncated=false bounds=51.876437,-0.160521,51.888408,-0.139673 filters=4 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000;;Number of parks within 1km:0:261" fields=0 travel_entries=0 agg_ms=0.0 json_ms=0.0 total_ms=0.1 -2026-05-04T13:42:54.458795Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=359 filters=4 travel=0 total=108 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000;;Number of parks within 1km:0:261" ms=0.0 -2026-05-04T13:42:54.634223Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=19 postcodes_after_filter=9 filtered_out=10 truncated=false bounds=51.876437,-0.160521,51.888408,-0.139673 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=1 travel_entries=0 agg_ms=0.0 json_ms=0.0 total_ms=0.1 -2026-05-04T13:42:54.787083Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=19 postcodes_after_filter=9 filtered_out=10 truncated=false bounds=51.876437,-0.160521,51.888408,-0.139673 filters=4 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000;;Number of parks within 1km:0:261" fields=1 travel_entries=0 agg_ms=0.1 json_ms=0.1 total_ms=0.1 -2026-05-04T13:42:56.155673Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T13:42:56.155846Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T13:42:56.156002Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=19 postcodes_after_filter=9 filtered_out=10 truncated=false bounds=51.876437,-0.160521,51.888408,-0.139673 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=1 travel_entries=0 agg_ms=0.1 json_ms=0.0 total_ms=0.1 -2026-05-04T13:42:56.220641Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=359 parallel=false cells_before_filter=12 cells_after_filter=12 truncated=false bounds=51.8764,-0.1605,51.8884,-0.1397 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.0 json_ms=0.0 total_ms=0.1 -2026-05-04T13:42:56.222821Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=19 postcodes_after_filter=9 filtered_out=10 truncated=false bounds=51.876437,-0.160521,51.888408,-0.139673 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=1 travel_entries=0 agg_ms=0.0 json_ms=0.1 total_ms=0.1 -2026-05-04T13:42:56.234072Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=19 postcodes_after_filter=9 filtered_out=10 truncated=false bounds=51.876437,-0.160521,51.888408,-0.139673 filters=3 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000" fields=1 travel_entries=0 agg_ms=0.0 json_ms=0.0 total_ms=0.1 -2026-05-04T13:42:56.385794Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=19 postcodes_after_filter=9 filtered_out=10 truncated=false bounds=51.876437,-0.160521,51.888408,-0.139673 filters=4 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000;;Number of parks within 1km:0:261" fields=1 travel_entries=0 agg_ms=0.1 json_ms=0.0 total_ms=0.1 -2026-05-04T13:42:56.636837Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=359 filters=4 travel=0 total=108 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000;;Number of parks within 1km:0:261" ms=0.1 -2026-05-04T13:42:57.297686Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=19 postcodes_after_filter=9 filtered_out=10 truncated=false bounds=51.876437,-0.160521,51.888408,-0.139673 filters=4 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000;;Number of parks within 1km:0:261" fields=0 travel_entries=0 agg_ms=0.0 json_ms=0.0 total_ms=0.1 -2026-05-04T13:42:57.546730Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=359 filters=4 travel=0 total=108 filters_raw="Number of bedrooms & living rooms:3:5;;Property type:Detached|Terraced|Flats/Maisonettes|Other;;Estimated current price:250000:940000;;Number of parks within 1km:0:261" ms=0.0 -2026-05-04T13:44:49.261099Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=112745 parallel=true cells_before_filter=400 cells_after_filter=353 truncated=false bounds=51.4958,-0.1756,51.5342,-0.0844 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.2 total_ms=1.2 -2026-05-04T13:44:50.347721Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da499bffff resolution=9 total_count=467 filters=0 filters_raw="-" ms=0.3 -2026-05-04T13:44:50.711966Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=87992 parallel=true cells_before_filter=321 cells_after_filter=269 truncated=false bounds=51.4958,-0.1632,51.5342,-0.0968 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.9 json_ms=0.2 total_ms=1.0 -2026-05-04T13:44:51.997117Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=250891 parallel=true cells_before_filter=852 cells_after_filter=772 truncated=false bounds=51.4774,-0.1839,51.5471,-0.0636 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.6 json_ms=0.4 total_ms=2.0 -2026-05-04T13:44:52.807772Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=560282 parallel=true cells_before_filter=2080 cells_after_filter=1933 truncated=false bounds=51.4478,-0.2187,51.5610,-0.0231 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=3.0 json_ms=1.0 total_ms=4.0 -2026-05-04T13:44:53.635787Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=807566 parallel=true cells_before_filter=3303 cells_after_filter=3219 truncated=false bounds=51.4220,-0.2488,51.5731,0.0121 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=5.3 json_ms=1.7 total_ms=7.0 -2026-05-04T13:44:54.798823Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=1105492 parallel=true cells_before_filter=5230 cells_after_filter=5113 truncated=false bounds=51.3929,-0.2828,51.5867,0.0517 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=7.1 json_ms=3.1 total_ms=10.3 -2026-05-04T13:44:55.395784Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88195da499fffff resolution=8 total_count=1870 filters=0 filters_raw="-" ms=0.7 -2026-05-04T13:44:55.661551Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1538003 parallel=true cells_before_filter=1378 cells_after_filter=1374 truncated=false bounds=51.3565,-0.3255,51.6038,0.1014 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=7.4 json_ms=0.7 total_ms=8.1 -2026-05-04T13:44:57.193263Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da4983ffff resolution=9 total_count=229 filters=0 filters_raw="-" ms=0.2 -2026-05-04T13:44:58.020688Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=179777 parallel=true cells_before_filter=622 cells_after_filter=549 truncated=false bounds=51.4856,-0.1743,51.5432,-0.0747 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.3 total_ms=1.8 -2026-05-04T13:44:58.881862Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=2345 postcodes_after_filter=962 filtered_out=1383 truncated=false bounds=51.508018,-0.143594,51.522240,-0.119026 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=1.6 json_ms=1.9 total_ms=3.5 -2026-05-04T13:45:00.062761Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=667 postcodes_after_filter=393 filtered_out=274 truncated=false bounds=51.511254,-0.139164,51.519214,-0.125412 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.5 json_ms=0.7 total_ms=1.2 -2026-05-04T13:45:00.628155Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=1608 postcodes_after_filter=746 filtered_out=862 truncated=false bounds=51.509410,-0.141687,51.520938,-0.121774 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=1.2 json_ms=1.5 total_ms=2.8 -2026-05-04T13:45:01.397027Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=667 postcodes_after_filter=288 filtered_out=379 truncated=false bounds=51.512070,-0.138270,51.518805,-0.126635 filters=0 filters_raw="-" fields=0 travel_entries=0 agg_ms=0.5 json_ms=0.6 total_ms=1.1 -2026-05-04T13:46:20.506454Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=112745 parallel=true cells_before_filter=400 cells_after_filter=353 truncated=false bounds=51.4958,-0.1756,51.5342,-0.0844 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.2 json_ms=0.2 total_ms=1.4 -2026-05-04T13:46:22.304549Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da49d7ffff resolution=9 total_count=156 filters=0 filters_raw="-" ms=0.2 -2026-05-04T13:46:22.672819Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=87992 parallel=true cells_before_filter=321 cells_after_filter=269 truncated=false bounds=51.4958,-0.1632,51.5342,-0.0968 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.2 total_ms=1.3 -2026-05-04T13:46:26.117587Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=87992 parallel=true cells_before_filter=321 cells_after_filter=269 truncated=false bounds=51.4958,-0.1632,51.5342,-0.0968 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.2 total_ms=1.5 -2026-05-04T13:46:29.627324Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=87992 parallel=true cells_before_filter=321 cells_after_filter=269 truncated=false bounds=51.4958,-0.1632,51.5342,-0.0968 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.3 total_ms=1.6 -2026-05-04T13:46:31.035921Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=87992 parallel=true cells_before_filter=321 cells_after_filter=269 truncated=false bounds=51.4958,-0.1632,51.5342,-0.0968 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.3 total_ms=1.6 -2026-05-04T13:46:33.389328Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=87992 parallel=true cells_before_filter=321 cells_after_filter=269 truncated=false bounds=51.4958,-0.1632,51.5342,-0.0968 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.2 total_ms=1.7 -2026-05-04T13:46:34.447908Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=112745 parallel=true cells_before_filter=400 cells_after_filter=353 truncated=false bounds=51.4958,-0.1756,51.5342,-0.0844 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.2 total_ms=1.3 -2026-05-04T13:46:36.494248Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da49c3ffff resolution=9 total_count=238 filters=0 filters_raw="-" ms=0.2 -2026-05-04T13:46:36.813787Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=87992 parallel=true cells_before_filter=321 cells_after_filter=269 truncated=false bounds=51.4958,-0.1632,51.5342,-0.0968 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.1 json_ms=0.2 total_ms=2.3 -2026-05-04T13:46:38.088286Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=87992 parallel=true cells_before_filter=321 cells_after_filter=269 truncated=false bounds=51.4958,-0.1632,51.5342,-0.0968 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.2 total_ms=1.3 -2026-05-04T13:46:41.614973Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=87992 parallel=true cells_before_filter=321 cells_after_filter=269 truncated=false bounds=51.4958,-0.1632,51.5342,-0.0968 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.2 total_ms=1.3 -2026-05-04T13:46:50.171562Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=112745 parallel=true cells_before_filter=400 cells_after_filter=353 truncated=false bounds=51.4958,-0.1756,51.5342,-0.0844 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.2 total_ms=1.3 -2026-05-04T13:47:12.829662Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=112745 parallel=true cells_before_filter=400 cells_after_filter=353 truncated=false bounds=51.4958,-0.1756,51.5342,-0.0844 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.2 total_ms=1.3 -2026-05-04T13:47:14.805046Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=112745 parallel=true cells_before_filter=400 cells_after_filter=353 truncated=false bounds=51.4958,-0.1756,51.5342,-0.0844 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.3 total_ms=1.4 -2026-05-04T13:47:27.810231Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=112745 parallel=true cells_before_filter=400 cells_after_filter=353 truncated=false bounds=51.4958,-0.1756,51.5342,-0.0844 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.2 total_ms=1.4 -2026-05-04T13:48:02.163972Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=112745 parallel=true cells_before_filter=400 cells_after_filter=353 truncated=false bounds=51.4958,-0.1756,51.5342,-0.0844 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.2 total_ms=1.2 -2026-05-04T13:48:06.028262Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da4d6fffff resolution=9 total_count=634 filters=0 filters_raw="-" ms=0.5 -2026-05-04T13:48:06.434121Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=87992 parallel=true cells_before_filter=321 cells_after_filter=269 truncated=false bounds=51.4958,-0.1632,51.5342,-0.0968 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.2 total_ms=1.5 -2026-05-04T13:48:40.137723Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T13:48:40.138972Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T13:48:40.386778Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=112745 parallel=true cells_before_filter=400 cells_after_filter=353 truncated=false bounds=51.4958,-0.1756,51.5342,-0.0844 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.2 total_ms=1.3 -2026-05-04T13:48:55.297351Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=112745 parallel=true cells_before_filter=400 cells_after_filter=353 truncated=false bounds=51.4958,-0.1756,51.5342,-0.0844 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.2 json_ms=0.2 total_ms=1.4 -2026-05-04T13:49:44.931917Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T13:49:44.932172Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T13:49:47.823496Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T13:49:47.825102Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T13:50:44.529719Z INFO property_map_server: Prometheus metrics initialized -2026-05-04T13:50:44.529961Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-05-04T13:50:44.529971Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-05-04T13:50:44.647846Z INFO property_map_server::data::property: Postcode features loaded rows=1263786 -2026-05-04T13:50:44.647857Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-05-04T13:50:47.490388Z INFO property_map_server::data::property: Properties joined with postcodes rows=15268176 -2026-05-04T13:50:47.490436Z INFO property_map_server::data::property: Feature columns from config numeric=59 enums=6 total=65 -2026-05-04T13:50:48.724658Z INFO property_map_server::data::property: Combined data selected rows=15268176 -2026-05-04T13:50:48.913363Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-05-04T13:50:49.330459Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-05-04T13:50:50.666878Z INFO property_map_server::data::property: Extracting string columns -2026-05-04T13:50:52.118792Z INFO property_map_server::data::property: Building enum features -2026-05-04T13:50:53.345347Z INFO property_map_server::data::property: Extracting renovation history -2026-05-04T13:50:56.253047Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1833881 -2026-05-04T13:50:56.253056Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-05-04T13:50:57.195604Z INFO property_map_server::data::property: Building interned strings -2026-05-04T13:51:03.033798Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-05-04T13:51:05.921508Z INFO property_map_server::data::property: Data loading complete -2026-05-04T13:51:07.124198Z INFO property_map_server: Property data loaded rows=15268176 features=65 enums=6 -2026-05-04T13:51:07.124209Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-05-04T13:51:07.223545Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-05-04T13:51:07.223556Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-05-04T13:51:07.651039Z INFO property_map_server::data::property: H3 precomputation complete (15268176 cells) -2026-05-04T13:51:07.651096Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-05-04T13:51:07.651112Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-05-04T13:51:07.674329Z INFO property_map_server::data::poi: Loaded 552015 POIs -2026-05-04T13:51:07.768215Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-05-04T13:51:07.768699Z INFO property_map_server::data::poi: POI data loading complete. -2026-05-04T13:51:07.813906Z INFO property_map_server: POI data loaded pois=552015 -2026-05-04T13:51:07.813914Z INFO property_map_server: Building POI spatial grid index -2026-05-04T13:51:07.819923Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-05-04T13:51:07.819942Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-05-04T13:51:07.820462Z INFO property_map_server::data::places: Loaded 3474 places -2026-05-04T13:51:07.821307Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-05-04T13:51:07.821431Z INFO property_map_server: Place data loaded places=3474 -2026-05-04T13:51:07.821442Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-05-04T13:51:07.821445Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-05-04T13:51:07.822622Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-05-04T13:51:15.031068Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-05-04T13:51:15.277115Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-05-04T13:51:15.425831Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-05-04T13:51:15.425883Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-05-04T13:51:15.428328Z INFO property_map_server: PMTiles loaded successfully -2026-05-04T13:51:15.464401Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-05-04T13:51:15.492995Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-05-04T13:51:15.493150Z INFO property_map_server: Precomputed features response groups=8 -2026-05-04T13:51:15.493166Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-05-04T13:51:15.552063Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-05-04T13:51:15.555546Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-05-04T13:51:15.558796Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-05-04T13:51:15.789464Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-05-04T13:51:15.794059Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-05-04T13:51:15.794099Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-05-04T13:51:15.794115Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-05-04T13:51:15.795606Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2753 -2026-05-04T13:51:15.796829Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=2753 -2026-05-04T13:51:15.798127Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=2753 -2026-05-04T13:51:15.799228Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=2752 -2026-05-04T13:51:15.799247Z INFO property_map_server: Travel time store loaded modes=4 -2026-05-04T13:51:15.799291Z INFO property_map_server: Precomputed AI filters system prompt -2026-05-04T13:51:18.578193Z INFO property_map_server: All memory pages locked (mlockall) -2026-05-04T13:51:18.578233Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-05-04T13:53:44.641552Z INFO property_map_server: Prometheus metrics initialized -2026-05-04T13:53:44.641728Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-05-04T13:53:44.641734Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-05-04T13:53:44.731708Z INFO property_map_server::data::property: Postcode features loaded rows=1263786 -2026-05-04T13:53:44.731716Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-05-04T13:53:54.076915Z INFO property_map_server: Prometheus metrics initialized -2026-05-04T13:53:54.077138Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-05-04T13:53:54.077149Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-05-04T13:53:54.145174Z INFO property_map_server::data::property: Postcode features loaded rows=1263786 -2026-05-04T13:53:54.145183Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-05-04T13:53:56.759389Z INFO property_map_server::data::property: Properties joined with postcodes rows=15268176 -2026-05-04T14:31:10.692075Z INFO property_map_server: Prometheus metrics initialized -2026-05-04T14:31:10.692240Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-05-04T14:31:10.692245Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-05-04T14:31:10.770532Z INFO property_map_server::data::property: Postcode features loaded rows=1263786 -2026-05-04T14:31:10.770541Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-05-04T14:31:13.301445Z INFO property_map_server::data::property: Properties joined with postcodes rows=15268176 -2026-05-04T14:31:13.301488Z INFO property_map_server::data::property: Feature columns from config numeric=63 enums=6 total=69 -2026-05-04T14:31:14.328175Z INFO property_map_server::data::property: Combined data selected rows=15268176 -2026-05-04T14:31:14.492406Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-05-04T14:31:14.931304Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-05-04T14:31:16.230106Z INFO property_map_server::data::property: Extracting string columns -2026-05-04T14:31:17.750814Z INFO property_map_server::data::property: Building enum features -2026-05-04T14:31:18.991972Z INFO property_map_server::data::property: Extracting renovation history -2026-05-04T14:31:21.744870Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1833881 -2026-05-04T14:31:21.744880Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-05-04T14:31:22.588439Z INFO property_map_server::data::property: Building interned strings -2026-05-04T14:31:27.983422Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-05-04T14:31:30.723144Z INFO property_map_server::data::property: Data loading complete -2026-05-04T14:31:31.783835Z INFO property_map_server: Property data loaded rows=15268176 features=69 enums=6 -2026-05-04T14:31:31.783844Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-05-04T14:31:31.878503Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-05-04T14:31:31.878511Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-05-04T14:31:32.244667Z INFO property_map_server::data::property: H3 precomputation complete (15268176 cells) -2026-05-04T14:31:32.244690Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-05-04T14:31:32.244696Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-05-04T14:31:32.278580Z INFO property_map_server::data::poi: Loaded 552015 POIs -2026-05-04T14:31:32.369662Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-05-04T14:31:32.370182Z INFO property_map_server::data::poi: POI data loading complete. -2026-05-04T14:31:32.399621Z INFO property_map_server: POI data loaded pois=552015 -2026-05-04T14:31:32.399629Z INFO property_map_server: Building POI spatial grid index -2026-05-04T14:31:32.404166Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-05-04T14:31:32.404180Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-05-04T14:31:32.405304Z INFO property_map_server::data::places: Loaded 3474 places -2026-05-04T14:31:32.406023Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-05-04T14:31:32.406072Z INFO property_map_server: Place data loaded places=3474 -2026-05-04T14:31:32.406081Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-05-04T14:31:32.406084Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-05-04T14:31:32.409062Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-05-04T14:31:39.345710Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-05-04T14:31:39.568740Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-05-04T14:31:39.703157Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-05-04T14:31:39.703207Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-05-04T14:31:39.724884Z INFO property_map_server: PMTiles loaded successfully -2026-05-04T14:31:39.760013Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-05-04T14:31:39.786139Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-05-04T14:31:39.786281Z INFO property_map_server: Precomputed features response groups=8 -2026-05-04T14:31:39.786295Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-05-04T14:31:39.846657Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-05-04T14:31:39.849446Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-05-04T14:31:39.853086Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-05-04T14:31:39.920258Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-05-04T14:31:39.923617Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-05-04T14:31:39.923633Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-05-04T14:31:39.923647Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-05-04T14:31:39.932375Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2753 -2026-05-04T14:31:39.938793Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=2753 -2026-05-04T14:31:39.946169Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=2753 -2026-05-04T14:31:39.953284Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=2752 -2026-05-04T14:31:39.953306Z INFO property_map_server: Travel time store loaded modes=4 -2026-05-04T14:31:39.953349Z INFO property_map_server: Precomputed AI filters system prompt -2026-05-04T14:31:46.702254Z INFO property_map_server: All memory pages locked (mlockall) -2026-05-04T14:31:46.702301Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-05-04T14:31:51.507147Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T14:31:51.532181Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T14:31:51.717412Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=56189 parallel=true cells_before_filter=241 cells_after_filter=207 truncated=false bounds=51.4958,-0.1549,51.5342,-0.1051 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=5.0 json_ms=0.1 total_ms=5.1 -2026-05-04T14:31:57.248517Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da4903ffff resolution=9 total_count=149 filters=0 filters_raw="-" ms=0.2 -2026-05-04T14:31:57.642670Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=27748 parallel=false cells_before_filter=135 cells_after_filter=121 truncated=false bounds=51.4958,-0.1426,51.5342,-0.1174 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.5 json_ms=0.1 total_ms=0.6 -2026-05-04T14:31:58.276708Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=73878 parallel=true cells_before_filter=295 cells_after_filter=258 truncated=false bounds=51.4844,-0.1493,51.5444,-0.1100 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.8 json_ms=0.1 total_ms=2.9 -2026-05-04T14:32:01.453197Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=143757 parallel=true cells_before_filter=507 cells_after_filter=459 truncated=false bounds=51.4844,-0.1685,51.5444,-0.0908 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=4.0 json_ms=0.4 total_ms=4.5 -2026-05-04T14:32:09.459548Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da49c3ffff resolution=9 total_count=238 filters=0 filters_raw="-" ms=0.2 -2026-05-04T14:32:09.912728Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=73878 parallel=true cells_before_filter=295 cells_after_filter=258 truncated=false bounds=51.4844,-0.1493,51.5444,-0.1100 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.4 json_ms=0.1 total_ms=1.5 -2026-05-04T14:32:16.916947Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=179777 parallel=true cells_before_filter=622 cells_after_filter=588 truncated=false bounds=51.4844,-0.1814,51.5444,-0.0779 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.8 json_ms=0.4 total_ms=2.2 -2026-05-04T14:32:29.276245Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=164098 parallel=true cells_before_filter=564 cells_after_filter=463 truncated=false bounds=51.4873,-0.1732,51.5415,-0.0861 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.4 total_ms=1.8 -2026-05-04T14:32:37.278425Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=179777 parallel=true cells_before_filter=622 cells_after_filter=588 truncated=false bounds=51.4844,-0.1814,51.5444,-0.0779 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.2 json_ms=0.3 total_ms=1.5 -2026-05-04T14:32:48.595193Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da49c3ffff resolution=9 total_count=238 filters=1 filters_raw="Estimated current price:12976.594:inf" ms=0.2 -2026-05-04T14:32:48.750130Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=179777 parallel=true cells_before_filter=620 cells_after_filter=586 truncated=false bounds=51.4844,-0.1814,51.5444,-0.0779 filters=1 filters_raw="Estimated current price:12976.594:inf" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.7 json_ms=0.3 total_ms=2.0 -2026-05-04T14:32:48.999873Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=179777 filters=1 travel=0 total=179708 filters_raw="Estimated current price:12976.594:inf" ms=3.8 -2026-05-04T14:32:52.684282Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=179777 parallel=true cells_before_filter=622 cells_after_filter=588 truncated=false bounds=51.4844,-0.1814,51.5444,-0.0779 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.6 json_ms=0.5 total_ms=2.1 -2026-05-04T14:32:52.838429Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=179777 parallel=true cells_before_filter=620 cells_after_filter=586 truncated=false bounds=51.4844,-0.1814,51.5444,-0.0779 filters=1 filters_raw="Estimated current price:12976.594:inf" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.8 json_ms=0.4 total_ms=2.3 -2026-05-04T14:32:53.423498Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da49c3ffff resolution=9 total_count=83 filters=1 filters_raw="Estimated current price:870000:inf" ms=0.2 -2026-05-04T14:32:53.572475Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=179777 parallel=true cells_before_filter=604 cells_after_filter=575 truncated=false bounds=51.4844,-0.1814,51.5444,-0.0779 filters=1 filters_raw="Estimated current price:870000:inf" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.3 total_ms=1.7 -2026-05-04T14:32:53.828525Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=179777 filters=1 travel=0 total=74949 filters_raw="Estimated current price:870000:inf" ms=4.2 -2026-05-04T14:32:54.216219Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=179777 parallel=true cells_before_filter=622 cells_after_filter=588 truncated=false bounds=51.4844,-0.1814,51.5444,-0.0779 filters=0 filters_raw="-" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.6 json_ms=0.4 total_ms=2.0 -2026-05-04T14:32:54.371206Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=179777 parallel=true cells_before_filter=604 cells_after_filter=575 truncated=false bounds=51.4844,-0.1814,51.5444,-0.0779 filters=1 filters_raw="Estimated current price:870000:inf" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.7 json_ms=0.4 total_ms=2.1 -2026-05-04T14:32:54.620982Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da49c3ffff resolution=9 total_count=39 filters=1 filters_raw="Estimated current price:870000:1900000" ms=0.2 -2026-05-04T14:32:54.776298Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=179777 parallel=true cells_before_filter=595 cells_after_filter=566 truncated=false bounds=51.4844,-0.1814,51.5444,-0.0779 filters=1 filters_raw="Estimated current price:870000:1900000" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.7 json_ms=0.3 total_ms=2.0 -2026-05-04T14:32:55.026138Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=179777 filters=1 travel=0 total=47437 filters_raw="Estimated current price:870000:1900000" ms=4.1 -2026-05-04T14:33:15.166790Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da49c3ffff resolution=9 total_count=39 filters=2 filters_raw="Estimated current price:870000:1900000;;Outstanding primary schools within 2km:0:13" ms=0.1 -2026-05-04T14:33:15.318640Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=179777 parallel=true cells_before_filter=595 cells_after_filter=566 truncated=false bounds=51.4844,-0.1814,51.5444,-0.0779 filters=2 filters_raw="Estimated current price:870000:1900000;;Outstanding primary schools within 2km:0:13" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.6 json_ms=0.3 total_ms=1.9 -2026-05-04T14:33:15.569035Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=179777 filters=2 travel=0 total=47437 filters_raw="Estimated current price:870000:1900000;;Outstanding primary schools within 2km:0:13" ms=1.6 -2026-05-04T14:33:17.371167Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da49c3ffff resolution=9 total_count=238 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.2 -2026-05-04T14:33:17.523252Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=179777 parallel=true cells_before_filter=622 cells_after_filter=588 truncated=false bounds=51.4844,-0.1814,51.5444,-0.0779 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.6 json_ms=0.3 total_ms=1.9 -2026-05-04T14:33:17.776356Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=179777 filters=1 travel=0 total=179777 filters_raw="Outstanding primary schools within 2km:0:13" ms=3.9 -2026-05-04T14:33:18.237582Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=179777 parallel=true cells_before_filter=622 cells_after_filter=588 truncated=false bounds=51.4844,-0.1814,51.5444,-0.0779 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.7 json_ms=0.5 total_ms=2.2 -2026-05-04T14:33:18.540811Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88195da49dfffff resolution=8 total_count=1598 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" ms=1.0 -2026-05-04T14:33:18.822161Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1602025 parallel=true cells_before_filter=1488 cells_after_filter=1480 truncated=false bounds=51.3754,-0.3056,51.6381,0.1482 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=9.3 json_ms=1.0 total_ms=10.3 -2026-05-04T14:33:19.412747Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=2263942 parallel=true cells_before_filter=3315 cells_after_filter=3312 truncated=false bounds=51.2909,-0.4016,51.7105,0.3228 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=12.7 json_ms=2.3 total_ms=15.0 -2026-05-04T14:33:19.641678Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=2263942 filters=1 travel=0 total=2263942 filters_raw="Outstanding primary schools within 2km:0:13" ms=46.8 -2026-05-04T14:33:20.426369Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=2334757 parallel=true cells_before_filter=3349 cells_after_filter=3349 truncated=false bounds=51.2935,-0.4698,51.7130,0.2546 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=14.4 json_ms=2.4 total_ms=16.8 -2026-05-04T14:33:20.840217Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=2334757 filters=1 travel=0 total=2334757 filters_raw="Outstanding primary schools within 2km:0:13" ms=47.0 -2026-05-04T14:33:23.190164Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=2156194 parallel=true cells_before_filter=3332 cells_after_filter=3319 truncated=false bounds=51.2216,-0.3539,51.6417,0.3705 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=11.6 json_ms=2.2 total_ms=13.8 -2026-05-04T14:33:23.371568Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da49c3ffff resolution=9 total_count=238 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.2 -2026-05-04T14:33:23.751648Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=301975 parallel=true cells_before_filter=2185 cells_after_filter=2155 truncated=false bounds=51.3506,-0.1079,51.4782,0.1121 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=3.7 json_ms=1.8 total_ms=5.5 -2026-05-04T14:33:24.061511Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=301975 filters=1 travel=0 total=301975 filters_raw="Outstanding primary schools within 2km:0:13" ms=8.8 -2026-05-04T14:33:24.888926Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=52244 parallel=true cells_before_filter=459 cells_after_filter=389 truncated=false bounds=51.3783,-0.0363,51.4272,0.0480 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.3 total_ms=1.3 -2026-05-04T14:33:25.067179Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=52244 filters=1 travel=0 total=52244 filters_raw="Outstanding primary schools within 2km:0:13" ms=1.2 -2026-05-04T14:33:26.723712Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88195da49dfffff resolution=8 total_count=1598 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.8 -2026-05-04T14:33:26.992552Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1558206 parallel=true cells_before_filter=1688 cells_after_filter=1688 truncated=false bounds=51.3034,-0.2613,51.5918,0.2362 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=9.0 json_ms=1.1 total_ms=10.2 -2026-05-04T14:33:27.323082Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1558206 filters=1 travel=0 total=1558206 filters_raw="Outstanding primary schools within 2km:0:13" ms=39.0 -2026-05-04T14:33:28.721780Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da49c3ffff resolution=9 total_count=238 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.2 -2026-05-04T14:33:29.038229Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=100651 parallel=true cells_before_filter=797 cells_after_filter=766 truncated=false bounds=51.3768,-0.0602,51.4478,0.0622 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.6 json_ms=0.5 total_ms=2.1 -2026-05-04T14:33:29.296078Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=100651 filters=1 travel=0 total=100651 filters_raw="Outstanding primary schools within 2km:0:13" ms=2.3 -2026-05-04T14:33:30.167958Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=25448 parallel=false cells_before_filter=204 cells_after_filter=163 truncated=false bounds=51.3934,-0.0199,51.4212,0.0281 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.1 total_ms=1.2 -2026-05-04T14:33:30.338111Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=25448 filters=1 travel=0 total=25448 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.6 -2026-05-04T14:33:35.577099Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=17074 parallel=false cells_before_filter=130 cells_after_filter=118 truncated=false bounds=51.3951,-0.0175,51.4192,0.0241 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.8 json_ms=0.1 total_ms=0.9 -2026-05-04T14:33:35.743827Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=17074 filters=1 travel=0 total=17074 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.6 -2026-05-04T14:33:36.299182Z INFO property_map_server::routes::postcodes: GET /api/postcode/W1U 2LR postcode=W1U 2LR -2026-05-04T14:33:36.341268Z INFO property_map_server::routes::postcode_stats: GET /api/postcode-stats postcode=W1U 2LR total_count=1 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.2 -2026-05-04T14:33:36.664276Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=449 postcodes_after_filter=196 filtered_out=253 truncated=false bounds=51.401237,-0.008369,51.411859,0.009937 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 agg_ms=0.6 json_ms=0.5 total_ms=1.1 -2026-05-04T14:33:37.141608Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=164 postcodes_after_filter=79 filtered_out=85 truncated=false bounds=51.403465,-0.005049,51.409166,0.004775 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 agg_ms=0.3 json_ms=0.2 total_ms=0.5 -2026-05-04T14:33:37.644049Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=164 postcodes_after_filter=42 filtered_out=122 truncated=false bounds=51.404354,-0.003724,51.408091,0.002716 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 agg_ms=0.3 json_ms=0.1 total_ms=0.4 -2026-05-04T14:33:37.842440Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=2531 filters=1 travel=0 total=2531 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.1 -2026-05-04T14:33:42.478048Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=164 postcodes_after_filter=79 filtered_out=85 truncated=false bounds=51.403364,-0.006206,51.409177,0.003811 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 agg_ms=0.2 json_ms=0.2 total_ms=0.4 -2026-05-04T14:33:42.923293Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=275 postcodes_after_filter=164 filtered_out=111 truncated=false bounds=51.401362,-0.011222,51.411370,0.006025 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 agg_ms=0.5 json_ms=0.4 total_ms=0.8 -2026-05-04T14:33:43.171767Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=4440 filters=1 travel=0 total=4440 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.1 -2026-05-04T14:33:43.762521Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=844 postcodes_after_filter=342 filtered_out=502 truncated=false bounds=51.399198,-0.016690,51.413809,0.008490 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 agg_ms=1.1 json_ms=0.8 total_ms=1.9 -2026-05-04T14:33:43.920897Z INFO property_map_server::routes::postcodes: GET /api/postcode/W1U 2LR postcode=W1U 2LR -2026-05-04T14:33:43.957532Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89195da49c3ffff resolution=9 total_count=238 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.2 -2026-05-04T14:33:44.112091Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=17149 parallel=false cells_before_filter=136 cells_after_filter=113 truncated=false bounds=51.3957,-0.0256,51.4178,0.0125 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=0.9 json_ms=0.1 total_ms=1.0 -2026-05-04T14:33:44.601712Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=30992 parallel=false cells_before_filter=242 cells_after_filter=209 truncated=false bounds=51.3905,-0.0387,51.4236,0.0184 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.4 json_ms=0.2 total_ms=1.6 -2026-05-04T14:33:44.857771Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=30992 filters=1 travel=0 total=30992 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.7 -2026-05-04T14:33:45.128264Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=58743 parallel=true cells_before_filter=440 cells_after_filter=365 truncated=false bounds=51.3844,-0.0540,51.4305,0.0253 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.1 json_ms=0.3 total_ms=1.4 -2026-05-04T14:33:45.557365Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=90373 parallel=true cells_before_filter=649 cells_after_filter=600 truncated=false bounds=51.3765,-0.0741,51.4396,0.0346 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.6 total_ms=1.9 -2026-05-04T14:33:45.851696Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=90373 filters=1 travel=0 total=90373 filters_raw="Outstanding primary schools within 2km:0:13" ms=1.9 -2026-05-04T14:33:46.858702Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=124648 parallel=true cells_before_filter=876 cells_after_filter=841 truncated=false bounds=51.3708,-0.0859,51.4455,0.0428 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.9 json_ms=0.6 total_ms=2.5 -2026-05-04T14:33:47.121801Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=58743 parallel=true cells_before_filter=440 cells_after_filter=413 truncated=false bounds=51.3826,-0.0617,51.4328,0.0247 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.3 json_ms=0.3 total_ms=1.6 -2026-05-04T14:33:47.372102Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=58743 filters=1 travel=0 total=58743 filters_raw="Outstanding primary schools within 2km:0:13" ms=1.3 -2026-05-04T14:33:47.675721Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=31768 parallel=false cells_before_filter=246 cells_after_filter=213 truncated=false bounds=51.3907,-0.0450,51.4240,0.0123 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.4 json_ms=0.2 total_ms=1.5 -2026-05-04T14:33:47.963908Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=31768 filters=1 travel=0 total=31768 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.8 -2026-05-04T14:33:48.676909Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad081bffff resolution=9 total_count=278 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.2 -2026-05-04T14:34:07.291746Z INFO property_map_server::routes::postcodes: GET /api/postcode/BR3 5JY postcode=BR3 5JY -2026-05-04T14:34:07.337676Z INFO property_map_server::routes::postcode_stats: GET /api/postcode-stats postcode=BR3 5JY total_count=18 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.2 -2026-05-04T14:34:07.623688Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=591 postcodes_after_filter=333 filtered_out=258 truncated=false bounds=51.399702,-0.030968,51.413517,-0.007161 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 agg_ms=0.9 json_ms=0.8 total_ms=1.7 -2026-05-04T14:34:07.924087Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=9452 filters=1 travel=0 total=9452 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.3 -2026-05-04T14:34:09.293016Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=178 postcodes_after_filter=72 filtered_out=106 truncated=false bounds=51.404221,-0.024351,51.409255,-0.015675 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 agg_ms=0.3 json_ms=0.3 total_ms=0.6 -2026-05-04T14:34:09.455756Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=2920 filters=1 travel=0 total=2920 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.2 -2026-05-04T14:34:10.275828Z INFO property_map_server::routes::postcodes: GET /api/postcodes postcodes_before_filter=591 postcodes_after_filter=376 filtered_out=215 truncated=false bounds=51.399312,-0.031939,51.414400,-0.005937 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 agg_ms=0.8 json_ms=0.8 total_ms=1.6 -2026-05-04T14:34:10.668283Z INFO property_map_server::routes::postcodes: GET /api/postcode/BR3 5JY postcode=BR3 5JY -2026-05-04T14:34:10.687952Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad081bffff resolution=9 total_count=278 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.3 -2026-05-04T14:34:11.040399Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=21245 parallel=false cells_before_filter=178 cells_after_filter=156 truncated=false bounds=51.3928,-0.0420,51.4212,0.0070 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=1.0 json_ms=0.1 total_ms=1.1 -2026-05-04T14:34:11.286312Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=21245 filters=1 travel=0 total=21245 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.4 -2026-05-04T14:34:12.012889Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=161883 parallel=true cells_before_filter=1198 cells_after_filter=1082 truncated=false bounds=51.3649,-0.0851,51.4504,0.0622 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=2.1 json_ms=1.0 total_ms=3.1 -2026-05-04T14:34:12.261721Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=161883 filters=1 travel=0 total=161883 filters_raw="Outstanding primary schools within 2km:0:13" ms=3.5 -2026-05-04T14:34:12.746648Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=470957 parallel=true cells_before_filter=3265 cells_after_filter=3177 truncated=false bounds=51.3272,-0.1433,51.4898,0.1370 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=4.9 json_ms=2.4 total_ms=7.3 -2026-05-04T14:34:13.052992Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=470957 filters=1 travel=0 total=470957 filters_raw="Outstanding primary schools within 2km:0:13" ms=9.4 -2026-05-04T14:34:13.508014Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194ad081fffff resolution=8 total_count=1405 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.8 -2026-05-04T14:34:14.440891Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1862424 parallel=true cells_before_filter=2958 cells_after_filter=2956 truncated=false bounds=51.1865,-0.3462,51.5872,0.3441 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=10.7 json_ms=2.0 total_ms=12.8 -2026-05-04T14:34:14.711749Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1862424 filters=1 travel=0 total=1862424 filters_raw="Outstanding primary schools within 2km:0:13" ms=38.7 -2026-05-04T14:34:15.156985Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=87194ad08ffffff resolution=7 total_count=7295 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" ms=2.9 -2026-05-04T14:34:15.549940Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=7 rows=2444899 parallel=true cells_before_filter=856 cells_after_filter=856 truncated=false bounds=51.1151,-0.4488,51.6364,0.4489 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=14.1 json_ms=0.6 total_ms=14.6 -2026-05-04T14:34:15.833608Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=2444899 filters=1 travel=0 total=2444899 filters_raw="Outstanding primary schools within 2km:0:13" ms=51.3 -2026-05-04T14:34:16.312869Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=88194ad081fffff resolution=8 total_count=1405 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.6 -2026-05-04T14:34:16.581112Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=8 rows=1270423 parallel=true cells_before_filter=1665 cells_after_filter=1661 truncated=false bounds=51.2543,-0.2492,51.5428,0.2477 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=7.1 json_ms=1.1 total_ms=8.2 -2026-05-04T14:34:16.847353Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=1270423 filters=1 travel=0 total=1270423 filters_raw="Outstanding primary schools within 2km:0:13" ms=26.0 -2026-05-04T14:34:17.416752Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad0803ffff resolution=9 total_count=202 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" ms=0.2 -2026-05-04T14:34:18.201389Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=170779 parallel=true cells_before_filter=1222 cells_after_filter=1144 truncated=false bounds=51.3742,-0.0770,51.4618,0.0741 filters=1 filters_raw="Outstanding primary schools within 2km:0:13" fields=1 travel_entries=0 grid_ms=0.0 agg_ms=2.3 json_ms=1.1 total_ms=3.3 -2026-05-04T14:34:18.400185Z INFO property_map_server::routes::filter_counts: GET /api/filter-counts rows=170779 filters=1 travel=0 total=170779 filters_raw="Outstanding primary schools within 2km:0:13" ms=3.7 -2026-05-04T14:34:26.482929Z INFO property_map_server::routes::hexagon_stats: GET /api/hexagon-stats h3=89194ad0803ffff resolution=9 total_count=202 filters=0 filters_raw="-" ms=0.2 -2026-05-04T14:34:26.627227Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=170779 parallel=true cells_before_filter=1222 cells_after_filter=1144 truncated=false bounds=51.3742,-0.0770,51.4618,0.0741 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.8 json_ms=0.6 total_ms=2.4 -2026-05-04T14:38:00.527629Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=68556 parallel=true cells_before_filter=488 cells_after_filter=464 truncated=false bounds=51.3742,-0.0301,51.4618,0.0272 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=0.9 json_ms=0.3 total_ms=1.2 -2026-05-04T14:38:02.040293Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T14:38:02.043451Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T14:38:02.318550Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=128410 parallel=true cells_before_filter=944 cells_after_filter=896 truncated=false bounds=51.3737,-0.0587,51.4622,0.0559 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.5 total_ms=2.0 -2026-05-04T14:40:44.080735Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T14:40:44.080967Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T14:40:44.353028Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=128410 parallel=true cells_before_filter=944 cells_after_filter=896 truncated=false bounds=51.3737,-0.0587,51.4622,0.0559 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.1 json_ms=0.5 total_ms=2.6 -2026-05-04T14:43:25.353372Z INFO property_map_server: Prometheus metrics initialized -2026-05-04T14:43:25.353548Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-05-04T14:43:25.353561Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-05-04T14:43:25.424150Z INFO property_map_server::data::property: Postcode features loaded rows=1263786 -2026-05-04T14:43:25.424161Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-05-04T14:43:27.935972Z INFO property_map_server::data::property: Properties joined with postcodes rows=15268176 -2026-05-04T14:43:27.936004Z INFO property_map_server::data::property: Feature columns from config numeric=63 enums=6 total=69 -2026-05-04T14:43:29.184640Z INFO property_map_server::data::property: Combined data selected rows=15268176 -2026-05-04T14:43:29.335896Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-05-04T14:43:29.748085Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-05-04T14:43:30.943285Z INFO property_map_server::data::property: Extracting string columns -2026-05-04T14:43:32.310146Z INFO property_map_server::data::property: Building enum features -2026-05-04T14:43:33.521409Z INFO property_map_server::data::property: Extracting renovation history -2026-05-04T14:43:36.402602Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1833881 -2026-05-04T14:43:36.402611Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-05-04T14:43:37.307204Z INFO property_map_server::data::property: Building interned strings -2026-05-04T14:43:43.199862Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-05-04T14:43:47.662961Z INFO property_map_server::data::property: Data loading complete -2026-05-04T14:43:48.770921Z INFO property_map_server: Property data loaded rows=15268176 features=69 enums=6 -2026-05-04T14:43:48.770930Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-05-04T14:43:48.868765Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-05-04T14:43:48.868775Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-05-04T14:43:49.270467Z INFO property_map_server::data::property: H3 precomputation complete (15268176 cells) -2026-05-04T14:43:49.270503Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-05-04T14:43:49.270508Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-05-04T14:43:49.291576Z INFO property_map_server::data::poi: Loaded 552015 POIs -2026-05-04T14:43:49.386151Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-05-04T14:43:49.386625Z INFO property_map_server::data::poi: POI data loading complete. -2026-05-04T14:43:49.421252Z INFO property_map_server: POI data loaded pois=552015 -2026-05-04T14:43:49.421262Z INFO property_map_server: Building POI spatial grid index -2026-05-04T14:43:49.426093Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-05-04T14:43:49.426101Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-05-04T14:43:49.426566Z INFO property_map_server::data::places: Loaded 3474 places -2026-05-04T14:43:49.427303Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-05-04T14:43:49.427358Z INFO property_map_server: Place data loaded places=3474 -2026-05-04T14:43:49.427367Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-05-04T14:43:49.427370Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-05-04T14:43:49.434429Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-05-04T14:43:57.689320Z INFO property_map_server: Prometheus metrics initialized -2026-05-04T14:43:57.689487Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-05-04T14:43:57.689495Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-05-04T14:43:57.756878Z INFO property_map_server::data::property: Postcode features loaded rows=1263786 -2026-05-04T14:43:57.756888Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-05-04T14:44:00.210212Z INFO property_map_server::data::property: Properties joined with postcodes rows=15268176 -2026-05-04T14:44:00.210250Z INFO property_map_server::data::property: Feature columns from config numeric=63 enums=6 total=69 -2026-05-04T14:44:01.218979Z INFO property_map_server::data::property: Combined data selected rows=15268176 -2026-05-04T14:44:01.363479Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-05-04T14:44:01.740585Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-05-04T14:44:02.963779Z INFO property_map_server::data::property: Extracting string columns -2026-05-04T14:44:04.340532Z INFO property_map_server::data::property: Building enum features -2026-05-04T14:44:05.582283Z INFO property_map_server::data::property: Extracting renovation history -2026-05-04T14:44:08.448995Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1833881 -2026-05-04T14:44:08.449004Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-05-04T14:44:09.312354Z INFO property_map_server::data::property: Building interned strings -2026-05-04T14:44:14.627999Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-05-04T14:44:22.690885Z INFO property_map_server::data::property: Data loading complete -2026-05-04T14:44:24.021349Z INFO property_map_server: Property data loaded rows=15268176 features=69 enums=6 -2026-05-04T14:44:24.021359Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-05-04T14:44:24.127984Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-05-04T14:44:24.127994Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-05-04T14:44:24.552707Z INFO property_map_server::data::property: H3 precomputation complete (15268176 cells) -2026-05-04T14:44:24.552729Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-05-04T14:44:24.552735Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-05-04T14:44:24.572951Z INFO property_map_server::data::poi: Loaded 552015 POIs -2026-05-04T14:44:24.669847Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-05-04T14:44:24.670324Z INFO property_map_server::data::poi: POI data loading complete. -2026-05-04T14:44:24.702559Z INFO property_map_server: POI data loaded pois=552015 -2026-05-04T14:44:24.702568Z INFO property_map_server: Building POI spatial grid index -2026-05-04T14:44:24.707240Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-05-04T14:44:24.707248Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-05-04T14:44:24.707755Z INFO property_map_server::data::places: Loaded 3474 places -2026-05-04T14:44:24.708477Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-05-04T14:44:24.708540Z INFO property_map_server: Place data loaded places=3474 -2026-05-04T14:44:24.708549Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-05-04T14:44:24.708560Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-05-04T14:44:24.709358Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-05-04T14:44:31.282327Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-05-04T14:44:31.506259Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-05-04T14:44:31.642818Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-05-04T14:44:31.642868Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-05-04T14:44:31.689370Z INFO property_map_server: PMTiles loaded successfully -2026-05-04T14:44:31.723714Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-05-04T14:44:31.759973Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-05-04T14:44:31.760116Z INFO property_map_server: Precomputed features response groups=8 -2026-05-04T14:44:31.760129Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-05-04T14:44:31.813314Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-05-04T14:44:31.828476Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-05-04T14:44:31.831588Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-05-04T14:44:38.915084Z INFO property_map_server: Prometheus metrics initialized -2026-05-04T14:44:38.915260Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-05-04T14:44:38.915272Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-05-04T14:44:38.981199Z INFO property_map_server::data::property: Postcode features loaded rows=1263786 -2026-05-04T14:44:38.981208Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-05-04T14:44:41.363555Z INFO property_map_server::data::property: Properties joined with postcodes rows=15268176 -2026-05-04T14:44:41.363588Z INFO property_map_server::data::property: Feature columns from config numeric=63 enums=6 total=69 -2026-05-04T14:44:42.373496Z INFO property_map_server::data::property: Combined data selected rows=15268176 -2026-05-04T14:44:42.521912Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-05-04T14:44:42.883334Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-05-04T14:44:44.153161Z INFO property_map_server::data::property: Extracting string columns -2026-05-04T14:44:45.451485Z INFO property_map_server::data::property: Building enum features -2026-05-04T14:44:46.669106Z INFO property_map_server::data::property: Extracting renovation history -2026-05-04T14:44:49.452139Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1833881 -2026-05-04T14:44:49.452147Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-05-04T14:44:50.299195Z INFO property_map_server::data::property: Building interned strings -2026-05-04T14:44:55.611183Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-05-04T14:45:00.089264Z INFO property_map_server::data::property: Data loading complete -2026-05-04T14:45:01.132313Z INFO property_map_server: Property data loaded rows=15268176 features=69 enums=6 -2026-05-04T14:45:01.132322Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-05-04T14:45:01.232930Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-05-04T14:45:01.232940Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-05-04T14:45:01.644976Z INFO property_map_server::data::property: H3 precomputation complete (15268176 cells) -2026-05-04T14:45:01.645007Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-05-04T14:45:01.645013Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-05-04T14:45:01.665085Z INFO property_map_server::data::poi: Loaded 552015 POIs -2026-05-04T14:45:01.759058Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-05-04T14:45:01.759640Z INFO property_map_server::data::poi: POI data loading complete. -2026-05-04T14:45:01.791356Z INFO property_map_server: POI data loaded pois=552015 -2026-05-04T14:45:01.791365Z INFO property_map_server: Building POI spatial grid index -2026-05-04T14:45:01.797608Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-05-04T14:45:01.797618Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-05-04T14:45:01.798218Z INFO property_map_server::data::places: Loaded 3474 places -2026-05-04T14:45:01.799012Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-05-04T14:45:01.799070Z INFO property_map_server: Place data loaded places=3474 -2026-05-04T14:45:01.799079Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-05-04T14:45:01.799082Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-05-04T14:45:01.799987Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-05-04T14:45:08.134111Z INFO property_map_server: Prometheus metrics initialized -2026-05-04T14:45:08.134279Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-05-04T14:45:08.134289Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-05-04T14:45:08.199503Z INFO property_map_server::data::property: Postcode features loaded rows=1263786 -2026-05-04T14:45:08.199512Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-05-04T14:45:10.581458Z INFO property_map_server::data::property: Properties joined with postcodes rows=15268176 -2026-05-04T14:45:10.581488Z INFO property_map_server::data::property: Feature columns from config numeric=63 enums=6 total=69 -2026-05-04T14:45:11.641800Z INFO property_map_server::data::property: Combined data selected rows=15268176 -2026-05-04T14:45:11.787205Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-05-04T14:45:12.165030Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-05-04T14:45:13.389884Z INFO property_map_server::data::property: Extracting string columns -2026-05-04T14:45:14.748149Z INFO property_map_server::data::property: Building enum features -2026-05-04T14:45:15.977535Z INFO property_map_server::data::property: Extracting renovation history -2026-05-04T14:45:18.827895Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1833881 -2026-05-04T14:45:18.827905Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-05-04T14:45:19.697239Z INFO property_map_server::data::property: Building interned strings -2026-05-04T14:45:31.153242Z INFO property_map_server: Prometheus metrics initialized -2026-05-04T14:45:31.153406Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-05-04T14:45:31.153422Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-05-04T14:45:31.219201Z INFO property_map_server::data::property: Postcode features loaded rows=1263786 -2026-05-04T14:45:31.219213Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-05-04T14:45:33.564270Z INFO property_map_server::data::property: Properties joined with postcodes rows=15268176 -2026-05-04T14:45:33.564305Z INFO property_map_server::data::property: Feature columns from config numeric=63 enums=6 total=69 -2026-05-04T14:45:36.281493Z WARN property_map_server::data::property: Dropped properties with missing postcode coordinates rows=743076 -2026-05-04T14:45:36.281502Z INFO property_map_server::data::property: Combined data selected rows=14525100 -2026-05-04T14:45:36.401348Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-05-04T14:45:36.758111Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-05-04T14:45:37.875216Z INFO property_map_server::data::property: Extracting string columns -2026-05-04T14:45:39.160760Z INFO property_map_server::data::property: Building enum features -2026-05-04T14:45:40.659139Z INFO property_map_server::data::property: Extracting renovation history -2026-05-04T14:45:42.636440Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1741939 -2026-05-04T14:45:42.636448Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-05-04T14:45:43.439562Z INFO property_map_server::data::property: Building interned strings -2026-05-04T14:45:48.482907Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-05-04T14:45:51.180179Z INFO property_map_server::data::property: Data loading complete -2026-05-04T14:45:52.166085Z INFO property_map_server: Property data loaded rows=14525100 features=69 enums=6 -2026-05-04T14:45:52.166096Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-05-04T14:45:52.250577Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-05-04T14:45:52.250585Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-05-04T14:45:52.614701Z INFO property_map_server::data::property: H3 precomputation complete (14525100 cells) -2026-05-04T14:45:52.614729Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-05-04T14:45:52.614736Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-05-04T14:45:52.642203Z INFO property_map_server::data::poi: Loaded 552015 POIs -2026-05-04T14:45:52.731917Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-05-04T14:45:52.732432Z INFO property_map_server::data::poi: POI data loading complete. -2026-05-04T14:45:52.762120Z INFO property_map_server: POI data loaded pois=552015 -2026-05-04T14:45:52.762126Z INFO property_map_server: Building POI spatial grid index -2026-05-04T14:45:52.766844Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-05-04T14:45:52.766849Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-05-04T14:45:52.767351Z INFO property_map_server::data::places: Loaded 3474 places -2026-05-04T14:45:52.768147Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-05-04T14:45:52.768200Z INFO property_map_server: Place data loaded places=3474 -2026-05-04T14:45:52.768209Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-05-04T14:45:52.768212Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-05-04T14:45:52.769171Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-05-04T14:45:59.458176Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-05-04T14:45:59.677820Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-05-04T14:45:59.810914Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-05-04T14:45:59.810961Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-05-04T14:45:59.811163Z INFO property_map_server: PMTiles loaded successfully -2026-05-04T14:45:59.846852Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-05-04T14:45:59.871182Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-05-04T14:45:59.871230Z INFO property_map_server: Precomputed features response groups=8 -2026-05-04T14:45:59.871243Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-05-04T14:45:59.917422Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-05-04T14:45:59.920134Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-05-04T14:45:59.923261Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-05-04T14:45:59.988619Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-05-04T14:45:59.991782Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-05-04T14:45:59.991803Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-05-04T14:45:59.991818Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-05-04T14:46:00.030486Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2753 -2026-05-04T14:46:00.044472Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=2753 -2026-05-04T14:46:00.052703Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=2753 -2026-05-04T14:46:00.064337Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=2752 -2026-05-04T14:46:00.064370Z INFO property_map_server: Travel time store loaded modes=4 -2026-05-04T14:46:00.064429Z INFO property_map_server: Precomputed AI filters system prompt -2026-05-04T14:46:05.611406Z INFO property_map_server: All memory pages locked (mlockall) -2026-05-04T14:46:05.611446Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-05-04T14:47:15.819022Z INFO property_map_server: Prometheus metrics initialized -2026-05-04T14:47:15.819187Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-05-04T14:47:15.819197Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-05-04T14:47:15.885121Z INFO property_map_server::data::property: Postcode features loaded rows=1263786 -2026-05-04T14:47:15.885132Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-05-04T14:47:18.372381Z INFO property_map_server::data::property: Properties joined with postcodes rows=15268176 -2026-05-04T14:47:18.372410Z INFO property_map_server::data::property: Feature columns from config numeric=63 enums=6 total=69 -2026-05-04T14:47:20.923011Z WARN property_map_server::data::property: Dropped properties with missing postcode coordinates rows=743076 -2026-05-04T14:47:20.923021Z INFO property_map_server::data::property: Combined data selected rows=14525100 -2026-05-04T14:47:21.045527Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-05-04T14:47:21.392236Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-05-04T14:47:22.507594Z INFO property_map_server::data::property: Extracting string columns -2026-05-04T14:47:23.774491Z INFO property_map_server::data::property: Building enum features -2026-05-04T14:47:24.936843Z INFO property_map_server::data::property: Extracting renovation history -2026-05-04T14:47:26.949732Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1741939 -2026-05-04T14:47:26.949741Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-05-04T14:47:27.766362Z INFO property_map_server::data::property: Building interned strings -2026-05-04T14:47:32.738931Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-05-04T14:47:35.373238Z INFO property_map_server::data::property: Data loading complete -2026-05-04T14:47:36.093547Z INFO property_map_server: Property data loaded rows=14525100 features=69 enums=6 -2026-05-04T14:47:36.093556Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-05-04T14:47:36.446544Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-05-04T14:47:36.446553Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-05-04T14:47:36.806465Z INFO property_map_server::data::property: H3 precomputation complete (14525100 cells) -2026-05-04T14:47:36.806489Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-05-04T14:47:36.806495Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-05-04T14:47:36.825191Z INFO property_map_server::data::poi: Loaded 552015 POIs -2026-05-04T14:47:36.915120Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-05-04T14:47:36.915662Z INFO property_map_server::data::poi: POI data loading complete. -2026-05-04T14:47:36.945387Z INFO property_map_server: POI data loaded pois=552015 -2026-05-04T14:47:36.945396Z INFO property_map_server: Building POI spatial grid index -2026-05-04T14:47:36.950771Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-05-04T14:47:36.950791Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-05-04T14:47:36.951334Z INFO property_map_server::data::places: Loaded 3474 places -2026-05-04T14:47:36.952410Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-05-04T14:47:36.952485Z INFO property_map_server: Place data loaded places=3474 -2026-05-04T14:47:36.952496Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-05-04T14:47:36.952500Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-05-04T14:47:36.953764Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-05-04T14:47:43.377454Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-05-04T14:47:43.612097Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-05-04T14:47:43.750736Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-05-04T14:47:43.750789Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-05-04T14:47:43.751019Z INFO property_map_server: PMTiles loaded successfully -2026-05-04T14:47:43.785502Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-05-04T14:47:43.810749Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-05-04T14:47:43.810898Z INFO property_map_server: Precomputed features response groups=8 -2026-05-04T14:47:43.810912Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-05-04T14:47:43.857558Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-05-04T14:47:43.860590Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-05-04T14:47:43.863548Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-05-04T14:47:44.082999Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-05-04T14:47:44.086665Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-05-04T14:47:44.086686Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-05-04T14:47:44.086700Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-05-04T14:47:44.088081Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2753 -2026-05-04T14:47:44.089379Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=2753 -2026-05-04T14:47:44.090629Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=2753 -2026-05-04T14:47:44.091709Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=2752 -2026-05-04T14:47:44.091724Z INFO property_map_server: Travel time store loaded modes=4 -2026-05-04T14:47:44.091761Z INFO property_map_server: Precomputed AI filters system prompt -2026-05-04T14:47:45.625293Z INFO property_map_server: All memory pages locked (mlockall) -2026-05-04T14:47:45.625334Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-05-04T14:50:57.638877Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T14:50:57.640497Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T14:50:57.922811Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=122687 parallel=true cells_before_filter=928 cells_after_filter=889 truncated=false bounds=51.3737,-0.0587,51.4622,0.0559 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=7.1 json_ms=0.6 total_ms=7.7 -2026-05-04T14:52:56.258632Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=122687 parallel=true cells_before_filter=928 cells_after_filter=889 truncated=false bounds=51.3737,-0.0587,51.4622,0.0559 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=4.1 json_ms=0.5 total_ms=4.6 -2026-05-04T14:53:12.185088Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=122687 parallel=true cells_before_filter=928 cells_after_filter=889 truncated=false bounds=51.3737,-0.0587,51.4622,0.0559 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.7 json_ms=0.5 total_ms=2.2 -2026-05-04T14:53:42.884119Z INFO property_map_server: Prometheus metrics initialized -2026-05-04T14:53:42.884271Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-05-04T14:53:42.884283Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-05-04T14:53:42.946330Z INFO property_map_server::data::property: Postcode features loaded rows=1263786 -2026-05-04T14:53:42.946339Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-05-04T14:53:45.357132Z INFO property_map_server::data::property: Properties joined with postcodes rows=15268176 -2026-05-04T14:53:45.357161Z INFO property_map_server::data::property: Feature columns from config numeric=63 enums=6 total=69 -2026-05-04T14:53:55.036134Z INFO property_map_server: Prometheus metrics initialized -2026-05-04T14:53:55.036295Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-05-04T14:53:55.036304Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-05-04T14:53:55.101654Z INFO property_map_server::data::property: Postcode features loaded rows=1263786 -2026-05-04T14:53:55.101664Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-05-04T14:53:57.600564Z INFO property_map_server::data::property: Properties joined with postcodes rows=15268176 -2026-05-04T14:53:57.600601Z INFO property_map_server::data::property: Feature columns from config numeric=63 enums=6 total=69 -2026-05-04T14:54:04.972538Z WARN property_map_server::data::property: Dropped properties with missing postcode coordinates rows=743076 -2026-05-04T14:54:04.972547Z INFO property_map_server::data::property: Combined data selected rows=14525100 -2026-05-04T14:54:05.102307Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-05-04T14:54:05.526039Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-05-04T14:54:06.851065Z INFO property_map_server::data::property: Extracting string columns -2026-05-04T14:54:08.168947Z INFO property_map_server::data::property: Building enum features -2026-05-04T14:54:09.788800Z INFO property_map_server::data::property: Extracting renovation history -2026-05-04T14:54:12.676020Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1741939 -2026-05-04T14:54:12.676028Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-05-04T14:54:14.887893Z INFO property_map_server::data::property: Building interned strings -2026-05-04T14:54:22.970834Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-05-04T14:54:26.292049Z INFO property_map_server::data::property: Data loading complete -2026-05-04T14:54:27.354753Z INFO property_map_server: Property data loaded rows=14525100 features=69 enums=6 -2026-05-04T14:54:27.354767Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-05-04T14:54:27.455615Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-05-04T14:54:27.455626Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-05-04T14:54:27.850640Z INFO property_map_server::data::property: H3 precomputation complete (14525100 cells) -2026-05-04T14:54:27.850666Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-05-04T14:54:27.850674Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-05-04T14:54:27.877285Z INFO property_map_server::data::poi: Loaded 552015 POIs -2026-05-04T14:54:27.970257Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-05-04T14:54:27.970733Z INFO property_map_server::data::poi: POI data loading complete. -2026-05-04T14:54:28.001753Z INFO property_map_server: POI data loaded pois=552015 -2026-05-04T14:54:28.001763Z INFO property_map_server: Building POI spatial grid index -2026-05-04T14:54:28.007151Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-05-04T14:54:28.007169Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-05-04T14:54:28.009833Z INFO property_map_server::data::places: Loaded 3474 places -2026-05-04T14:54:28.010633Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-05-04T14:54:28.010706Z INFO property_map_server: Place data loaded places=3474 -2026-05-04T14:54:28.010717Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-05-04T14:54:28.010722Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-05-04T14:54:28.021635Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-05-04T14:54:35.600631Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-05-04T14:54:35.828192Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-05-04T14:54:35.965637Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-05-04T14:54:35.965695Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-05-04T14:54:35.981397Z INFO property_map_server: PMTiles loaded successfully -2026-05-04T14:54:36.016685Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-05-04T14:54:36.054406Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-05-04T14:54:36.054564Z INFO property_map_server: Precomputed features response groups=8 -2026-05-04T14:54:36.054579Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-05-04T14:54:36.125619Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-05-04T14:54:36.130171Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-05-04T14:54:36.134321Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-05-04T14:54:36.513738Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-05-04T14:54:36.517029Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-05-04T14:54:36.517057Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-05-04T14:54:36.517075Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-05-04T14:54:36.520211Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2753 -2026-05-04T14:54:36.523065Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=2753 -2026-05-04T14:54:36.525013Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=2753 -2026-05-04T14:54:36.527299Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=2752 -2026-05-04T14:54:36.527317Z INFO property_map_server: Travel time store loaded modes=4 -2026-05-04T14:54:36.527363Z INFO property_map_server: Precomputed AI filters system prompt -2026-05-04T14:54:42.237462Z INFO property_map_server: All memory pages locked (mlockall) -2026-05-04T14:54:42.237501Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-05-04T14:55:02.185484Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T14:55:02.186180Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T14:55:11.287843Z INFO property_map_server: Prometheus metrics initialized -2026-05-04T14:55:11.287997Z INFO property_map_server: Loading property data from /app/data/properties.parquet, /app/data/postcode.parquet -2026-05-04T14:55:11.288007Z INFO property_map_server::data::property: Loading postcode features from "/app/data/postcode.parquet" -2026-05-04T14:55:11.376260Z INFO property_map_server::data::property: Postcode features loaded rows=1263786 -2026-05-04T14:55:11.376273Z INFO property_map_server::data::property: Loading properties from "/app/data/properties.parquet" -2026-05-04T14:55:13.827818Z INFO property_map_server::data::property: Properties joined with postcodes rows=15268176 -2026-05-04T14:55:13.827854Z INFO property_map_server::data::property: Feature columns from config numeric=63 enums=6 total=69 -2026-05-04T14:55:16.429385Z WARN property_map_server::data::property: Dropped properties with missing postcode coordinates rows=743076 -2026-05-04T14:55:16.429395Z INFO property_map_server::data::property: Combined data selected rows=14525100 -2026-05-04T14:55:16.568441Z INFO property_map_server::data::property: Extracting numeric feature columns -2026-05-04T14:55:16.975936Z INFO property_map_server::data::property: Computing histograms for numeric features -2026-05-04T14:55:18.251169Z INFO property_map_server::data::property: Extracting string columns -2026-05-04T14:55:19.527096Z INFO property_map_server::data::property: Building enum features -2026-05-04T14:55:20.712350Z INFO property_map_server::data::property: Extracting renovation history -2026-05-04T14:55:22.823604Z INFO property_map_server::data::property: Renovation history extracted properties_with_events=1741939 -2026-05-04T14:55:22.823615Z INFO property_map_server::data::property: Sorting rows by spatial locality -2026-05-04T14:55:23.891440Z INFO property_map_server::data::property: Building interned strings -2026-05-04T14:55:31.505572Z INFO property_map_server::data::property: Transposing to row-major layout (spatially sorted, quantized to u16) -2026-05-04T14:55:34.169480Z INFO property_map_server::data::property: Data loading complete -2026-05-04T14:55:34.942506Z INFO property_map_server: Property data loaded rows=14525100 features=69 enums=6 -2026-05-04T14:55:34.942516Z INFO property_map_server: Building spatial grid index (0.01° cells) -2026-05-04T14:55:35.294923Z INFO property_map_server: Precomputing H3 cells at resolution 12 -2026-05-04T14:55:35.294933Z INFO property_map_server::data::property: Precomputing H3 cells at resolution 12 -2026-05-04T14:55:35.726054Z INFO property_map_server::data::property: H3 precomputation complete (14525100 cells) -2026-05-04T14:55:35.726080Z INFO property_map_server: Loading POI data from /app/data/filtered_uk_pois.parquet -2026-05-04T14:55:35.726087Z INFO property_map_server::data::poi: Loading POI data from "/app/data/filtered_uk_pois.parquet"... -2026-05-04T14:55:35.744824Z INFO property_map_server::data::poi: Loaded 552015 POIs -2026-05-04T14:55:35.838137Z INFO property_map_server::data::poi: POI string columns interned category_unique=74 group_unique=11 emoji_unique=71 -2026-05-04T14:55:35.838638Z INFO property_map_server::data::poi: POI data loading complete. -2026-05-04T14:55:35.876768Z INFO property_map_server: POI data loaded pois=552015 -2026-05-04T14:55:35.876778Z INFO property_map_server: Building POI spatial grid index -2026-05-04T14:55:35.881786Z INFO property_map_server: Loading place data from /app/data/places.parquet -2026-05-04T14:55:35.881803Z INFO property_map_server::data::places: Loading place data from "/app/data/places.parquet"... -2026-05-04T14:55:35.882353Z INFO property_map_server::data::places: Loaded 3474 places -2026-05-04T14:55:35.883258Z INFO property_map_server::data::places: Place data loaded places=3474 types=2 with_population=71 with_city=3392 -2026-05-04T14:55:35.883316Z INFO property_map_server: Place data loaded places=3474 -2026-05-04T14:55:35.883325Z INFO property_map_server: Loading postcode boundaries from /app/data/postcode_boundaries -2026-05-04T14:55:35.883328Z INFO property_map_server::data::postcodes: Loading postcode boundaries from "/app/data/postcode_boundaries" -2026-05-04T14:55:35.886822Z INFO property_map_server::data::postcodes: Found GeoJSON files to process files=2361 -2026-05-04T14:55:42.631313Z INFO property_map_server::data::postcodes: Postcode boundary data ready postcodes=1490140 -2026-05-04T14:55:42.861921Z INFO property_map_server: Postcode boundaries loaded postcodes=1490140 -2026-05-04T14:55:43.004963Z INFO property_map_server::data::postcodes: Outcode data derived from postcodes outcodes=2361 -2026-05-04T14:55:43.005018Z INFO property_map_server: Loading PMTiles from /app/data/uk.pmtiles -2026-05-04T14:55:43.005240Z INFO property_map_server: PMTiles loaded successfully -2026-05-04T14:55:43.040940Z INFO property_map_server: No --dist provided; static serving and OG injection disabled -2026-05-04T14:55:43.066453Z INFO property_map_server: Screenshot service configured: http://screenshot:8002 -2026-05-04T14:55:43.066611Z INFO property_map_server: Precomputed features response groups=8 -2026-05-04T14:55:43.066626Z INFO property_map_server: PocketBase configured: http://pocketbase:8090 -2026-05-04T14:55:43.121000Z INFO property_map_server::pocketbase: PocketBase users collection already has all required fields -2026-05-04T14:55:43.126266Z INFO property_map_server::pocketbase: PocketBase collection 'saved_searches' API rules updated -2026-05-04T14:55:43.131790Z INFO property_map_server::pocketbase: PocketBase collection 'saved_properties' API rules updated -2026-05-04T14:55:43.476085Z INFO property_map_server::pocketbase: PocketBase meta.appURL set to https://perfect-postcodes.co.uk/pb -2026-05-04T14:55:43.480666Z INFO property_map_server::pocketbase: PocketBase OAuth configured on users collection -2026-05-04T14:55:43.480705Z INFO property_map_server: Gemini configured (model: gemini-3-flash-preview) -2026-05-04T14:55:43.480720Z INFO property_map_server: Loading travel time data from /app/data/travel-times -2026-05-04T14:55:43.486304Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="bicycle" destinations=2753 -2026-05-04T14:55:43.489899Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="walking" destinations=2753 -2026-05-04T14:55:43.494485Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="car" destinations=2753 -2026-05-04T14:55:43.499714Z INFO property_map_server::data::travel_time: Travel time mode discovered mode="transit" destinations=2752 -2026-05-04T14:55:43.499735Z INFO property_map_server: Travel time store loaded modes=4 -2026-05-04T14:55:43.499785Z INFO property_map_server: Precomputed AI filters system prompt -2026-05-04T14:55:45.137547Z INFO property_map_server: All memory pages locked (mlockall) -2026-05-04T14:55:45.137591Z INFO property_map_server: Server listening on 0.0.0.0:8001 -2026-05-04T14:55:54.824291Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T14:55:54.825669Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T14:55:55.012652Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=83099 parallel=true cells_before_filter=312 cells_after_filter=300 truncated=false bounds=51.4958,-0.1756,51.5342,-0.0844 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=6.6 json_ms=0.2 total_ms=6.8 -2026-05-04T15:12:24.599195Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=122687 parallel=true cells_before_filter=928 cells_after_filter=889 truncated=false bounds=51.3737,-0.0587,51.4622,0.0559 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=5.4 json_ms=0.5 total_ms=5.9 -2026-05-04T15:13:03.754369Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=122687 parallel=true cells_before_filter=928 cells_after_filter=889 truncated=false bounds=51.3737,-0.0587,51.4622,0.0559 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=2.2 json_ms=0.5 total_ms=2.8 -2026-05-04T15:13:24.272603Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T15:13:24.278421Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T15:13:24.413467Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T15:13:24.414872Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T15:13:24.742082Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=122687 parallel=true cells_before_filter=928 cells_after_filter=889 truncated=false bounds=51.3737,-0.0587,51.4622,0.0559 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.8 json_ms=0.5 total_ms=2.2 -2026-05-04T15:14:00.462118Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T15:14:00.462123Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T15:14:00.595786Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T15:14:00.597610Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T15:14:00.899405Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=122687 parallel=true cells_before_filter=928 cells_after_filter=889 truncated=false bounds=51.3737,-0.0587,51.4622,0.0559 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.5 total_ms=2.0 -2026-05-04T15:15:33.019623Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T15:15:33.025700Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T15:15:33.134642Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T15:15:33.136271Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T15:15:33.480486Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=122687 parallel=true cells_before_filter=928 cells_after_filter=889 truncated=false bounds=51.3737,-0.0587,51.4622,0.0559 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.6 json_ms=0.5 total_ms=2.0 -2026-05-04T15:16:08.081958Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T15:16:08.087511Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T15:16:08.294230Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T15:16:08.295412Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T15:16:08.604460Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=122687 parallel=true cells_before_filter=928 cells_after_filter=889 truncated=false bounds=51.3737,-0.0587,51.4622,0.0559 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.5 json_ms=0.5 total_ms=1.9 -2026-05-04T15:17:07.960849Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T15:17:07.968658Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T15:17:08.143457Z INFO property_map_server::routes::features: GET /api/features -2026-05-04T15:17:08.144527Z INFO property_map_server::routes::pois: GET /api/poi-categories count=74 groups=11 -2026-05-04T15:17:08.451792Z INFO property_map_server::routes::hexagons: GET /api/hexagons resolution=9 rows=122687 parallel=true cells_before_filter=928 cells_after_filter=889 truncated=false bounds=51.3737,-0.0587,51.4622,0.0559 filters=0 filters_raw="-" fields=0 travel_entries=0 grid_ms=0.0 agg_ms=1.6 json_ms=0.5 total_ms=2.1