
MapaTrhu · Datový produkt
MapaTrhu spojuje nabídky z více portálů, vývoj cen, kontext lokality a porovnání do jednoho pracovního prostoru pro koupi nemovitosti.
Decision journey
The selected market stays put when a user opens a listing from the map. Price, locality and comparable offers load progressively, each one arriving at the moment it can inform the next decision.

Scroll the diagram horizontally.
Listings from multiple portals share one map. Viewport and filters update the results together, keeping the visible market relevant.
The detail keeps the selected area in context and adds source, price, history, attributes, and photos without returning to a stack of portal tabs.
The price map compares districts and localities through a consistent price-per-square-metre view, giving one asking price a market frame.
Seventeen optional layers add transport, parks, schools, demography, risks, services, and analytical signals directly to the map.
The estimate uses comparable price per square metre, time weighting, and data availability. It communicates context and confidence, not a guaranteed value.
Technologie
01
Jedna nemovitost se může objevit na více portálech, s odlišným textem a bez souvislé historie. Kupující pak skládá obraz trhu z otevřených karet, tabulek a dojmů.
“Rozhodnutí o bydlení potřebuje víc než fotografii a cenu.”



02
Mapa je hlavní pracovní rozhraní. Při pohybu a filtrování mění body, výsledky i vrstvy lokality společně, aby uživatel neztratil kontext mezi nabídkou a místem.



03
Cenová mapa porovnává okresy a lokality. V detailu přibude vývoj ceny, dostupnost a služby v okolí. Odhad neukazujeme jako jistotu. Ke každému číslu patří zdroj i míra důvěry.



04
Zajímavé nabídky lze uložit, sledovat přes upozornění a porovnat vedle sebe. Stejné parametry u každé nemovitosti mění výběr z pocitu na kontrolovatelný shortlist.




05
Sběr a deduplikace nabídek běží na PostgreSQL a FastAPI. Samotná mapa je MapLibre v Reactu. Rise drží produkt, design, vývoj i provoz, takže se rozhraní a datová vrstva vyvíjejí společně.

Design and engineering
A listing keeps its origin, its identity and its price context through every movement of the map. Collection, calculation and public reads sit in separate layers so none of them slows the others down.
We mapped buyer decisions and the information needed from the first filter through the shortlist.
We compared portal payloads and preserved the source of every listing and subsequent change.
We designed a shared listing model and a deterministic key for linking the same property across sources.
We separated raw capture, identity, calculations, and public reads so each can change and be checked independently.
We profiled map queries and added a read model, caching, and scheduled jobs around real viewport use.

Scroll the diagram horizontally.
React 19, TypeScript 6, Vite 8, MapLibre 5, TanStack Query, and Zustand keep filters, viewport, detail, and comparison in one state.
FastAPI in platform_v2 registers 81 route modules. Seventy-three services and raw psycopg3 separate domain decisions from SQL reads.
aiohttp collectors read about 26 portals over HTTP, preserve the raw record, and deterministically link the same listings without losing provenance.
PostGIS 3.5 serves spatial selections, 17 layers, and an H3 resolution-7 grid. pgvector adds text retrieval and similarity.
PostgreSQL 17, Redis 8, materialized views, systemd jobs, Docker, Caddy, and imgproxy support fast reads and regular data refresh.
Listing data pipeline
Raw portal data never reaches the map. A record keeps its source, gets normalized, is linked to the property it duplicates and picks up calculated signals. Only then does it enter the read model.

Scroll the diagram horizontally.
HTTP collectors for about 26 portals store the raw response and keep downloading separate from later processing.
Parsing and geocoding turn different names, prices, areas, addresses, and coordinates into the shared listings working model.
A SHA-1 key built from country, rounded price and area, city, street, and rooms links sources while preserving their history.
A cohort price-per-square-metre z-score and ROI methodology populate property_metrics_current. The output remains an estimate with an explained source.
FastAPI, read models, and two-tier caching serve the MapLibre map, 17 layers, details, alerts, and saved searches.
Podobný cíl, řešení podle vás