The workflow before#
Avison Young's advisors price properties and recommend sites for clients, and most of the questions they get are about place: what's near this building, who walks past it, how much those people spend. The analysts behind them worked from transaction history and comparable sales in a relational database that struggled with location joins. A complex geospatial query ran 15 to 45 minutes, and a property comparison took 2 to 4 hours. Card spend, mobility, census and economic data each needed its own integration code, so adding a source took 4 to 6 weeks. Client reports took 1 to 2 days to produce, on data refreshed once a week.
What we built#
We built a location graph that connects every property to the places around it and the behavior observed there. Instead of joining tables at query time, the relationships are stored up front: this building sits in this block, near these stores, with this foot traffic trend. Analysts ask a question about a place and get an answer in seconds, then take it straight into a dashboard or a client report.
A map of how places relate
Properties sit inside a location hierarchy of city, submarket, neighborhood and block, and links record proximity, similarity and how foot traffic or spending tracks with a property's performance. Spatial indexes answer questions like "office buildings within half a mile of high foot traffic" in 2 to 5 seconds. We chose a graph over more relational tuning because the questions advisors ask are about connections, and a graph stores connections directly.
One intake for 15+ outside sources
Aggregated card transactions, mobility data, census and economic series and property data now come through one set of scheduled ingestion jobs, each with quality checks and incremental loads. A new source follows the same pattern instead of needing custom code, which is how onboarding dropped from 4 to 6 weeks to 2 to 3 days. Every source carries lineage, so an analyst can see where a number came from before it goes in front of a client.
Dashboards analysts use directly
Modeled data flows into Power BI and custom dashboards built for comparison work. A property comparison that took 2 to 4 hours now takes about 30 seconds, and a client report that took 1 to 2 days takes about 15 minutes. We kept the reporting layer in tools the analysts already knew, so the time saved went to analysis instead of training.
How we delivered it
We worked alongside Avison Young's data team, starting with the location model and a small set of high-value sources, then adding the rest once the query patterns held up. All infrastructure is defined as code and promoted through one pipeline from development to staging to production, so the three environments match. That also means a new market can be added by configuration rather than a rebuild.
Before and after#
| Measure | Before | After |
|---|---|---|
| Complex geospatial query | 15 to 45 minutes | 2 to 5 seconds |
| Property comparison analysis | 2 to 4 hours | About 30 seconds |
| Adding a new third-party data source | 4 to 6 weeks | 2 to 3 days |
| Client report production | 1 to 2 days | About 15 minutes |
What's next#
The linked property, location and behavior data sets up the next phase: an analytics assistant that lets advisors ask pricing and site selection questions of the graph in plain English, and valuation models trained on the same history. Both draw on relationships the graph already holds, so most of the groundwork is done.





