New videos

This commit is contained in:
Andras Schmelczer 2026-06-22 22:02:35 +01:00
parent a02c8f7849
commit 6c6780fc60
52 changed files with 414 additions and 74 deletions

View file

@ -56,4 +56,4 @@ EXPOSE 8001
HEALTHCHECK --interval=30s --timeout=5s --start-period=120s --retries=3 \
CMD curl -f http://localhost:8001/health || exit 1
ENTRYPOINT ["./property-map-server"]
CMD ["--properties", "/app/data/properties.parquet", "--postcode-features", "/app/data/postcode.parquet", "--pois", "/app/data/filtered_uk_pois.parquet", "--places", "/app/data/places.parquet", "--tiles", "/app/data/uk.pmtiles", "--postcodes", "/app/data/postcode_boundaries", "--travel-times", "/app/data/travel-times", "--satellite-tiles", "/app/data/satellite.pmtiles", "--satellite-highres-tiles", "/app/data/satellite_highres.pmtiles", "--noise-overlay-tiles", "/app/data/noise_lden_10m.pmtiles", "--crime-hotspot-tiles", "/app/data/crime_hotspots.pmtiles", "--tree-overlay-tiles", "/app/data/trees_outside_woodlands.pmtiles", "--property-border-tiles", "/app/data/property_borders.pmtiles", "--crime-by-year-path", "/app/property-data/crime_by_postcode_by_year.parquet", "--dist", "/app/frontend/dist"]
CMD ["--properties", "/app/data/properties.parquet", "--postcode-features", "/app/data/postcode.parquet", "--pois", "/app/data/filtered_uk_pois.parquet", "--places", "/app/data/places.parquet", "--tiles", "/app/data/uk.pmtiles", "--postcodes", "/app/data/postcode_boundaries", "--travel-times", "/app/data/travel-times", "--satellite-tiles", "/app/data/satellite.pmtiles", "--satellite-highres-tiles", "/app/data/satellite_highres.pmtiles", "--noise-overlay-tiles", "/app/data/noise_lden_10m.pmtiles", "--crime-hotspot-tiles", "/app/data/crime_hotspots.pmtiles", "--tree-overlay-tiles", "/app/data/trees_outside_woodlands.pmtiles", "--property-border-tiles", "/app/data/property_borders.pmtiles", "--crime-by-year-path", "/app/property-data/crime_by_postcode_by_year.parquet", "--population-path", "/app/property-data/population_by_postcode.parquet", "--developments", "/app/data/development_sites.parquet", "--dist", "/app/frontend/dist"]

View file

@ -33,15 +33,19 @@ EPC := $(MANUAL_DATA)/domestic-csv.zip
ACTUAL_LISTINGS_RAW := $(FINDER_DATA)/online_listings_buy.parquet
ACTUAL_LISTINGS_ENRICHED := $(FINDER_DATA)/online_listings_buy_enriched.parquet
ETHNICITY := $(DATA_DIR)/ethnicity_by_lsoa.parquet
EDUCATION := $(DATA_DIR)/education_by_lsoa.parquet
TENURE := $(DATA_DIR)/tenure_by_lsoa.parquet
CRIME_DIR := $(DATA_DIR)/crime
CRIME := $(DATA_DIR)/crime_by_postcode.parquet
CRIME_BY_YEAR := $(DATA_DIR)/crime_by_postcode_by_year.parquet
POPULATION := $(DATA_DIR)/population_by_postcode.parquet
CRIME_STAMP := $(CRIME_DIR)/.downloaded
NOISE := $(DATA_DIR)/road_noise.parquet
NOISE_OVERLAY_TILES := $(DATA_DIR)/noise_lden_10m.pmtiles
CRIME_HOTSPOT_TILES := $(DATA_DIR)/crime_hotspots.pmtiles
TREE_OVERLAY_TILES := $(DATA_DIR)/trees_outside_woodlands.pmtiles
PROPERTY_BORDER_TILES := $(DATA_DIR)/property_borders.pmtiles
DEVELOPMENT_SITES := $(DATA_DIR)/development_sites.parquet
OFSTED := $(DATA_DIR)/ofsted.parquet
GIAS := $(DATA_DIR)/gias.parquet
NAPTAN := $(DATA_DIR)/naptan.parquet
@ -107,16 +111,16 @@ MAP_ASSETS_DEPS := pipeline/download/map_assets.py pipeline/transform/transform_
# ── Phony aliases ─────────────────────────────────────────────────────────────
.PHONY: prepare merge tiles satellite-tiles satellite-highres-tiles overlay-tiles noise-overlay-tiles crime-hotspot-tiles tree-overlay-tiles property-border-tiles \
download-arcgis download-price-paid download-deprivation download-ethnicity \
download-arcgis download-price-paid download-deprivation download-ethnicity download-education download-tenure \
download-naptan download-pois download-grocery-retail-points download-ofsted download-gias download-lsoa-children download-broadband download-conservation-areas download-listed-buildings download-rental-prices \
download-postcodes download-noise download-inspire download-crime \
download-oa-boundaries download-uprn-lookup download-transit-network download-greenspace download-os-greenspace download-pbf download-fr-tow download-nfi download-ofs-register download-places download-median-age download-england-boundary download-rightmove-outcodes \
download-oa-boundaries download-uprn-lookup download-transit-network download-greenspace download-os-greenspace download-pbf download-fr-tow download-nfi download-ofs-register download-places download-median-age download-population download-england-boundary download-rightmove-outcodes \
download-map-assets \
transform-pois transform-epc-pp transform-crime transform-poi-proximity \
transform-school-catchments transform-tree-density \
generate-postcode-boundaries generate-travel-times enrich-actual-listings
generate-postcode-boundaries generate-travel-times enrich-actual-listings download-development-sites
prepare: $(PRICES_STAMP) download-places tiles satellite-tiles overlay-tiles property-border-tiles tree-overlay-tiles crime-hotspot-tiles property-border-tiles generate-postcode-boundaries download-map-assets generate-travel-times | $(POSTCODES_PQ) $(PROPERTIES_PQ) $(PRICE_INDEX)
prepare: $(PRICES_STAMP) download-places tiles satellite-tiles overlay-tiles property-border-tiles tree-overlay-tiles crime-hotspot-tiles property-border-tiles generate-postcode-boundaries download-map-assets generate-travel-times $(DEVELOPMENT_SITES) $(POPULATION) | $(POSTCODES_PQ) $(PROPERTIES_PQ) $(PRICE_INDEX)
$(VALIDATE_OUTPUTS) --parquet $(POSTCODES_PQ) --parquet $(PROPERTIES_PQ) --parquet $(PRICE_INDEX) --postcode-boundary-match "$(POSTCODES_PQ)::$(PC_BOUNDARIES)" --postcode-features $(POSTCODES_PQ) --postcode-universe "$(ARCGIS)::$(POSTCODES_PQ)" --properties-subset "$(PROPERTIES_PQ)::$(POSTCODES_PQ)" --price-index $(PRICE_INDEX)
merge: $(MERGE_STAMP) | $(POSTCODES_PQ) $(PROPERTIES_PQ)
$(VALIDATE_OUTPUTS) --parquet $(POSTCODES_PQ) --parquet $(PROPERTIES_PQ) --postcode-features $(POSTCODES_PQ) --postcode-universe "$(ARCGIS)::$(POSTCODES_PQ)" --properties-subset "$(PROPERTIES_PQ)::$(POSTCODES_PQ)"
@ -133,6 +137,8 @@ download-arcgis: $(ARCGIS)
download-price-paid: $(PRICE_PAID)
download-deprivation: $(IOD)
download-ethnicity: $(ETHNICITY)
download-education: $(EDUCATION)
download-tenure: $(TENURE)
download-crime: $(CRIME_STAMP)
$(VALIDATE_OUTPUTS) --file $(CRIME_DIR)/archive_manifest.json --glob "$(CRIME_DIR)::**/*-street.csv"
download-naptan: $(NAPTAN)
@ -143,6 +149,7 @@ download-gias: $(GIAS)
download-lsoa-children: $(LSOA_CHILDREN)
download-broadband: $(BROADBAND)
download-conservation-areas: $(CONSERVATION_AREAS)
download-development-sites: $(DEVELOPMENT_SITES)
download-listed-buildings: $(LISTED_BUILDINGS)
download-postcodes: $(POSTCODES_RAW)
download-rental-prices: $(RENTAL)
@ -161,6 +168,7 @@ download-nfi: $(NFI)
download-ofs-register: $(OFS_REGISTER)
download-places: $(PLACES)
download-median-age: $(MEDIAN_AGE)
download-population: $(POPULATION)
download-election-results: $(ELECTION)
download-england-boundary: $(ENGLAND_BOUNDARY)
download-rightmove-outcodes: $(RM_OUTCODES)
@ -235,6 +243,12 @@ $(IOD):
$(ETHNICITY): pipeline/download/ethnicity.py
uv run python -m pipeline.download.ethnicity --output $@
$(EDUCATION): pipeline/download/education.py
uv run python -m pipeline.download.education --output $@
$(TENURE): pipeline/download/tenure.py
uv run python -m pipeline.download.tenure --output $@
$(CRIME_STAMP): $(CRIME_DOWNLOAD_DEPS)
@rm -f $@
uv run python -m pipeline.download.crime --output $(CRIME_DIR)
@ -285,6 +299,9 @@ $(BROADBAND):
$(CONSERVATION_AREAS): pipeline/download/conservation_areas.py
uv run python -m pipeline.download.conservation_areas --output $@
$(DEVELOPMENT_SITES): pipeline/download/development_sites.py
uv run python -m pipeline.download.development_sites --output $@
$(LISTED_BUILDINGS): pipeline/download/listed_buildings.py
uv run python -m pipeline.download.listed_buildings --output $@
@ -340,6 +357,9 @@ $(PLACES): $(PBF) $(ENGLAND_BOUNDARY) $(NAPTAN) $(OFS_REGISTER) $(ARCGIS) $(POIS
$(MEDIAN_AGE):
uv run python -m pipeline.download.median_age --output $@
$(POPULATION): pipeline/download/census_population.py
uv run python -m pipeline.download.census_population --output $@
$(ELECTION): pipeline/download/election_results.py
uv run python -m pipeline.download.election_results --output $@
@ -400,7 +420,7 @@ $(PC_BOUNDARIES):
# ── Final merge → postcode.parquet + properties.parquet ──────────────────────
$(MERGE_STAMP): $(EPC_PP) $(ARCGIS) $(IOD) $(POI_PROXIMITY) \
$(ETHNICITY) $(CRIME) $(NOISE) $(SCHOOL_CATCH) $(BROADBAND) $(CONSERVATION_AREAS) $(LISTED_BUILDINGS) $(RENTAL) $(MEDIAN_AGE) $(ELECTION) $(TREE_DENSITY_PC) $(MERGE_DEPS)
$(ETHNICITY) $(EDUCATION) $(TENURE) $(CRIME) $(NOISE) $(SCHOOL_CATCH) $(BROADBAND) $(CONSERVATION_AREAS) $(LISTED_BUILDINGS) $(RENTAL) $(MEDIAN_AGE) $(ELECTION) $(TREE_DENSITY_PC) $(MERGE_DEPS)
@rm -f $@
uv run python -m pipeline.transform.merge \
--epc-pp $(EPC_PP) \
@ -408,6 +428,8 @@ $(MERGE_STAMP): $(EPC_PP) $(ARCGIS) $(IOD) $(POI_PROXIMITY) \
--iod $(IOD) \
--poi-proximity $(POI_PROXIMITY) \
--ethnicity $(ETHNICITY) \
--education $(EDUCATION) \
--tenure $(TENURE) \
--crime $(CRIME) \
--noise $(NOISE) \
--school-catchments $(SCHOOL_CATCH) \
@ -440,7 +462,7 @@ $(PRICES_STAMP): $(MERGE_STAMP) $(PRICE_INDEX) $(PRICE_ESTIMATE_DEPS) | $(PROPER
$(ACTUAL_LISTINGS_ENRICHED): $(ACTUAL_LISTINGS_RAW) $(EPC) \
$(EPC_PP) $(ARCGIS) $(IOD) $(POI_PROXIMITY) \
$(ETHNICITY) $(CRIME) $(NOISE) $(SCHOOL_CATCH) $(BROADBAND) \
$(ETHNICITY) $(EDUCATION) $(TENURE) $(CRIME) $(NOISE) $(SCHOOL_CATCH) $(BROADBAND) \
$(CONSERVATION_AREAS) $(LISTED_BUILDINGS) $(RENTAL) \
$(MEDIAN_AGE) $(ELECTION) $(TREE_DENSITY_PC) \
$(MERGE_DEPS) pipeline/utils/fuzzy_join.py
@ -450,6 +472,8 @@ $(ACTUAL_LISTINGS_ENRICHED): $(ACTUAL_LISTINGS_RAW) $(EPC) \
--iod $(IOD) \
--poi-proximity $(POI_PROXIMITY) \
--ethnicity $(ETHNICITY) \
--education $(EDUCATION) \
--tenure $(TENURE) \
--crime $(CRIME) \
--noise $(NOISE) \
--school-catchments $(SCHOOL_CATCH) \

View file

@ -11,7 +11,7 @@ services:
command: >
bash -c "
cargo install cargo-watch &&
cargo watch --poll -i logs/ -x 'run -- --properties /app/property-data/properties.parquet --postcode-features /app/property-data/postcode.parquet --pois /app/property-data/filtered_uk_pois.parquet --places /app/property-data/places.parquet --tiles /app/property-data/uk.pmtiles --postcodes /app/property-data/postcode_boundaries --travel-times /app/property-data/travel-times --satellite-tiles /app/property-data/satellite.pmtiles --satellite-highres-tiles /app/property-data/satellite_highres.pmtiles --noise-overlay-tiles /app/property-data/noise_lden_10m.pmtiles --crime-hotspot-tiles /app/property-data/crime_hotspots.pmtiles --tree-overlay-tiles /app/property-data/trees_outside_woodlands.pmtiles --property-border-tiles /app/property-data/property_borders.pmtiles'
cargo watch --poll -i logs/ -x 'run -- --properties /app/property-data/properties.parquet --postcode-features /app/property-data/postcode.parquet --pois /app/property-data/filtered_uk_pois.parquet --places /app/property-data/places.parquet --tiles /app/property-data/uk.pmtiles --postcodes /app/property-data/postcode_boundaries --travel-times /app/property-data/travel-times --satellite-tiles /app/property-data/satellite.pmtiles --satellite-highres-tiles /app/property-data/satellite_highres.pmtiles --noise-overlay-tiles /app/property-data/noise_lden_10m.pmtiles --crime-hotspot-tiles /app/property-data/crime_hotspots.pmtiles --tree-overlay-tiles /app/property-data/trees_outside_woodlands.pmtiles --property-border-tiles /app/property-data/property_borders.pmtiles --crime-by-year-path /app/property-data/crime_by_postcode_by_year.parquet --population-path /app/property-data/population_by_postcode.parquet'
"
ports:
- "8001:8001"
@ -57,6 +57,7 @@ services:
BUGSINK_ENVIRONMENT: ${BUGSINK_ENVIRONMENT:-development}
BUGSINK_RELEASE: ${BUGSINK_RELEASE:-}
ACTUAL_LISTINGS_PATH: /app/finder/data/online_listings_buy_enriched.parquet
DEVELOPMENTS_PATH: /app/property-data/development_sites.parquet
BUGSINK_SEND_DEFAULT_PII: ${BUGSINK_SEND_DEFAULT_PII:-false}
depends_on:
screenshot:

BIN
frontend/public/video/ad-01-say-it.jpg (Stored with Git LFS)

Binary file not shown.

BIN
frontend/public/video/ad-01-say-it.mp4 (Stored with Git LFS)

Binary file not shown.

View file

@ -0,0 +1,14 @@
WEBVTT
00:00:00.201 --> 00:00:03.961
My whole house brief is one plain sentence.
00:00:04.361 --> 00:00:08.841
Every postcode in England that fits, sorted by value.
00:00:10.141 --> 00:00:14.941
Same schools, same commute, the price quietly drops nearby.
00:00:15.591 --> 00:00:19.511
The underpriced twin is on this map. Find it.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,14 @@
WEBVTT
00:00:02.121 --> 00:00:05.961
Every colour on this map is a commute to central London.
00:00:06.361 --> 00:00:09.801
Here's what twenty minutes actually leaves you.
00:00:11.301 --> 00:00:16.741
Same twenty minutes wherever it's lit, but not the same price.
00:00:17.391 --> 00:00:21.151
The commute is priced in. The bargain is not.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,14 @@
WEBVTT
00:00:01.021 --> 00:00:05.341
One name costs more. The block next door scores the same.
00:00:05.741 --> 00:00:11.581
Sold prices, schools, crime, even Street View, for this exact postcode.
00:00:12.031 --> 00:00:17.071
The same evidence a pricey postcode has, sitting quietly cheaper here.
00:00:17.671 --> 00:00:22.071
Every postcode, proven on the numbers, not its reputation.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,14 @@
WEBVTT
00:00:00.201 --> 00:00:04.441
Listing photos are silent. Main roads are not.
00:00:04.841 --> 00:00:07.881
This is London under fifty-five decibels.
00:00:09.181 --> 00:00:13.021
Nearby, just as quiet, and overlooked.
00:00:13.671 --> 00:00:16.071
The quiet street nobody bid up.

BIN
frontend/public/video/ad-05-school-run.jpg (Stored with Git LFS)

Binary file not shown.

BIN
frontend/public/video/ad-05-school-run.mp4 (Stored with Git LFS)

Binary file not shown.

View file

@ -0,0 +1,14 @@
WEBVTT
00:00:00.201 --> 00:00:06.521
Good primary, low crime, under three hundred and fifty. The actual family brief.
00:00:06.921 --> 00:00:11.081
Everything still on the map passes all three filters.
00:00:12.381 --> 00:00:17.741
Same primary, same low crime, without the name everyone else is bidding up.
00:00:18.391 --> 00:00:21.831
The schools are real. The premium is optional.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,14 @@
WEBVTT
00:00:00.204 --> 00:00:05.724
A Waitrose, a tube stop, a park nearby. Search by what you want.
00:00:06.124 --> 00:00:10.204
London, narrowed to the postcodes that fit the way you live.
00:00:11.504 --> 00:00:14.704
Same amenities, lower price nearby.
00:00:15.354 --> 00:00:19.354
Same Waitrose. Same tube. Cheaper postcode.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,14 @@
WEBVTT
00:00:00.201 --> 00:00:05.561
Rent under sixteen hundred, half an hour to central, on a quiet street.
00:00:05.961 --> 00:00:10.201
Letting sites rank flats. This ranks the streets around them.
00:00:11.501 --> 00:00:15.821
Same commute, same quiet, lower rent nearby.
00:00:16.471 --> 00:00:19.831
The name costs more. The street does not.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,14 @@
WEBVTT
00:00:00.201 --> 00:00:05.641
Two streets, same schools, same commute, priced tens of thousands apart.
00:00:06.041 --> 00:00:10.201
You pay for the postcode's name; the value sits a postcode away.
00:00:11.501 --> 00:00:15.581
Pay once, find the bargain, stop overpaying for the name.
00:00:16.231 --> 00:00:19.351
Buy value, not reputation.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,26 @@
WEBVTT
00:00:00.241 --> 00:00:04.081
Der Ruf einer Gegend steckt im Preis. Ihr wahrer Wert nicht.
00:00:04.431 --> 00:00:10.831
Also sag, was du suchst. Budget, Arbeitsweg, Schulen, sogar wie ruhig die Straße ist.
00:00:11.201 --> 00:00:16.641
Eine Vorgabe, und England schrumpft auf die Postleitzahlen, die dein Geld wert sind.
00:00:17.191 --> 00:00:21.751
Verschärf den Arbeitsweg, und in Sekunden bleiben nur die besten übrig.
00:00:22.351 --> 00:00:26.111
Auf Straßenebene stechen die besten Ecken von selbst hervor.
00:00:26.969 --> 00:00:34.649
Öffne eine, und sie zeigt die Belege. Verkaufspreise, Schulen, Kriminalität, Lärm, Internet.
00:00:41.505 --> 00:00:47.505
Behalte die paar mit dem besten Preis-Leistungs-Verhältnis, exportier sie und schau sie dir vor Ort an.
00:00:48.505 --> 00:00:52.105
Zahl nicht für den Namen. Finde den Wert.

BIN
frontend/public/video/recording-de.jpg (Stored with Git LFS)

Binary file not shown.

BIN
frontend/public/video/recording-de.mp4 (Stored with Git LFS)

Binary file not shown.

View file

@ -0,0 +1,26 @@
WEBVTT
00:00:00.244 --> 00:00:04.084
Der Ruf einer Gegend steckt im Preis. Ihr wahrer Wert nicht.
00:00:04.434 --> 00:00:10.834
Also sag, was du suchst. Budget, Arbeitsweg, Schulen, sogar wie ruhig die Straße ist.
00:00:11.204 --> 00:00:16.644
Eine Vorgabe, und England schrumpft auf die Postleitzahlen, die dein Geld wert sind.
00:00:17.194 --> 00:00:21.754
Verschärf den Arbeitsweg, und in Sekunden bleiben nur die besten übrig.
00:00:22.354 --> 00:00:26.114
Auf Straßenebene stechen die besten Ecken von selbst hervor.
00:00:27.355 --> 00:00:35.035
Öffne eine, und sie zeigt die Belege. Verkaufspreise, Schulen, Kriminalität, Lärm, Internet.
00:00:37.235 --> 00:00:43.235
Behalte die paar mit dem besten Preis-Leistungs-Verhältnis, exportier sie und schau sie dir vor Ort an.
00:00:44.235 --> 00:00:47.835
Zahl nicht für den Namen. Finde den Wert.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,26 @@
WEBVTT
00:00:00.241 --> 00:00:04.881
A postcode's reputation is priced in. Its value isn't.
00:00:05.231 --> 00:00:12.111
So start with the brief. Budget, commute, schools, even how quiet the street is.
00:00:12.481 --> 00:00:16.721
One brief, and England narrows to the postcodes worth your money.
00:00:17.271 --> 00:00:20.871
Tighten the commute, and the keepers narrow further in seconds.
00:00:21.471 --> 00:00:26.111
Down at street level, the strongest streets start to stand out.
00:00:26.561 --> 00:00:33.921
Open one, and it shows its work. Sold prices, schools, crime, noise, broadband.
00:00:41.054 --> 00:00:46.494
Keep the best-value few, export them, and scout where it actually counts.
00:00:47.494 --> 00:00:50.694
Stop paying for the name. Find the value.

BIN
frontend/public/video/recording-hi.jpg (Stored with Git LFS)

Binary file not shown.

BIN
frontend/public/video/recording-hi.mp4 (Stored with Git LFS)

Binary file not shown.

View file

@ -0,0 +1,26 @@
WEBVTT
00:00:00.245 --> 00:00:04.885
A postcode's reputation is priced in. Its value isn't.
00:00:05.235 --> 00:00:12.115
So start with the brief. Budget, commute, schools, even how quiet the street is.
00:00:12.485 --> 00:00:16.725
One brief, and England narrows to the postcodes worth your money.
00:00:17.275 --> 00:00:20.875
Tighten the commute, and the keepers narrow further in seconds.
00:00:21.475 --> 00:00:26.115
Down at street level, the strongest streets start to stand out.
00:00:26.565 --> 00:00:33.925
Open one, and it shows its work. Sold prices, schools, crime, noise, broadband.
00:00:36.125 --> 00:00:41.565
Keep the best-value few, export them, and scout where it actually counts.
00:00:42.565 --> 00:00:45.765
Stop paying for the name. Find the value.

BIN
frontend/public/video/recording-mobile.jpg (Stored with Git LFS)

Binary file not shown.

BIN
frontend/public/video/recording-mobile.mp4 (Stored with Git LFS)

Binary file not shown.

View file

@ -0,0 +1,26 @@
WEBVTT
00:00:00.240 --> 00:00:05.200
A postcode's reputation is priced in. Its value isn't.
00:00:05.550 --> 00:00:12.110
So start with the brief. Budget, commute, schools, even how quiet the street is.
00:00:12.480 --> 00:00:17.200
One brief, and England narrows to the postcodes worth your money.
00:00:17.750 --> 00:00:22.630
Tighten the commute, and the keepers narrow further in seconds.
00:00:23.230 --> 00:00:29.150
Down at street level, the strongest streets start to stand out.
00:00:29.600 --> 00:00:37.920
Open one, and it shows its work. Sold prices, schools, crime, noise, broadband.
00:00:44.031 --> 00:00:49.871
Keep the best-value few, export them, and scout where it actually counts.
00:00:50.871 --> 00:00:53.991
Stop paying for the name. Find the value.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,26 @@
WEBVTT
00:00:00.242 --> 00:00:06.322
00:00:06.672 --> 00:00:15.152
00:00:15.522 --> 00:00:20.162
00:00:20.712 --> 00:00:25.672
00:00:26.272 --> 00:00:29.952
00:00:30.960 --> 00:00:38.080
00:00:45.462 --> 00:00:51.302
00:00:52.302 --> 00:00:55.422

BIN
frontend/public/video/recording-zh.jpg (Stored with Git LFS)

Binary file not shown.

BIN
frontend/public/video/recording-zh.mp4 (Stored with Git LFS)

Binary file not shown.

View file

@ -0,0 +1,26 @@
WEBVTT
00:00:00.244 --> 00:00:06.324
00:00:06.674 --> 00:00:15.154
00:00:15.524 --> 00:00:20.164
00:00:20.714 --> 00:00:25.674
00:00:26.274 --> 00:00:29.954
00:00:31.054 --> 00:00:38.174
00:00:40.375 --> 00:00:46.215
00:00:47.215 --> 00:00:50.335

BIN
frontend/public/video/recording.jpg (Stored with Git LFS)

Binary file not shown.

BIN
frontend/public/video/recording.mp4 (Stored with Git LFS)

Binary file not shown.

View file

@ -0,0 +1,26 @@
WEBVTT
00:00:00.241 --> 00:00:05.201
A postcode's reputation is priced in. Its value isn't.
00:00:05.551 --> 00:00:12.111
So start with the brief. Budget, commute, schools, even how quiet the street is.
00:00:12.481 --> 00:00:17.201
One brief, and England narrows to the postcodes worth your money.
00:00:17.751 --> 00:00:22.631
Tighten the commute, and the keepers narrow further in seconds.
00:00:23.231 --> 00:00:29.151
Down at street level, the strongest streets start to stand out.
00:00:29.601 --> 00:00:37.921
Open one, and it shows its work. Sold prices, schools, crime, noise, broadband.
00:00:40.021 --> 00:00:45.861
Keep the best-value few, export them, and scout where it actually counts.
00:00:46.861 --> 00:00:49.981
Stop paying for the name. Find the value.

View file

@ -440,6 +440,7 @@ for sb in "${STORYBOARDS[@]}"; do
say "[$sb] Publishing to $PUBLISH_DIR/$sb.{mp4,jpg}"
cp "output/$sb/recording.mp4" "$PUBLISH_DIR/$sb.mp4"
cp "output/$sb/poster.jpg" "$PUBLISH_DIR/$sb.jpg"
[ -f "output/$sb/narration.vtt" ] && cp "output/$sb/narration.vtt" "$PUBLISH_DIR/$sb.vtt"
node dist/verify.js "$sb" "$PUBLISH_DIR/$sb.mp4" "$PUBLISH_DIR/$sb.jpg"
fi
done