Business clustering service
Retail data is inherently messy — a single commercial site often contains multiple distinct points, such as a big-box anchor, a nested pharmacy, and a fuel outlet sharing the same parking area. service-business turns those raw points into actionable commercial clusters using a parent-child spatial schema, so the GIS engine receives one unified commercial entity per physical site rather than several overlapping records. The service iterates the service-fs raw data lake, groups entities that share a footprint within a 100 m proximity threshold, and assigns the highest-weight named anchor as the parent.
The Clustering Logic
Retail data is inherently messy. A single commercial node often contains multiple distinct points — for example, a big-box anchor store, a nested pharmacy, and a fuel outlet in the same parking area. service-business processes these points so that the GIS engine produces a single, unified commercial entity per physical site.
Grid-Based Spatial Indexing
To perform this at scale, the service uses a grid-based spatial index (approximately 1 km cells). It iterates through the service-fs raw data lake and groups entities that share a physical footprint within a 100 m proximity threshold.
Parent-Child Schema
- Parent node: The primary commercial driver — typically the highest-weight named anchor at the site.
- Children (sub-entities): Secondary operators located within the same spatial node.
Cleansed Data Output
The output is a refined cleansed-clusters.jsonl file. This processed dataset is consumed by the downstream app-orchestration-gis to build the regional co-location index.