Client
Advan ResearchType of the project
SaaS PlatformDuration
5 monthsDedicated team
1 full stack, 1 PMIndustry
Commercial Real EstateTHE BACKSTORY
Advan Research is a US location intelligence firm helping institutional investors, retailers, and commercial real estate companies make decisions driven by human mobility data. Analyzing over 10 trillion geolocation signals, 150M rooftops, and 9M POIs, Advan engaged Leetio to advance the development of REveal, one of its core platforms.
PROJECT BUSINESS OBJECTIVES
Despite the massive volume of data, the core challenge was making it accessible to business users without constant reliance on data engineers. The platform needed to allow users to quickly locate points of interest and compare properties.
By the end of the project, REveal was designed to deliver:
Complete self-service (the ability to analyze any location and extract key insights without leaning on an analytics team).
Portfolio benchmarking (seamless, side-by-side property comparisons and evaluations against core business metrics).
Instant reporting: (one-click generation of shareholder-ready reports for internal teams, investors, and clients).
Data-driven site selection (a unified analytical layer combining foot traffic, demographics, and transaction data for high-precision decision-making).
WHY LEETIO
1. Experience with data-intensive products
We specialize in turning massive datasets into user-friendly tools. It’s the main reason we were able to hit the ground running with REveal’s complex analytics so quickly.
2. Zero-downtime modernization
We prefer refactoring legacy code in stages rather than pushing for a ground-up rewrite. This lets us overhaul the frontend architecture and ship new features while keeping the platform live and stable for users.
3. Expertise in complex, high-performance UIs
We focus on building highly responsive frontends. This was critical for keeping REveal’s interactive maps, charts, and massive datasets fast and fluid.
4. Proactive engineering partnership
We look for the best technical approaches. We helped shape key decisions on this project, from the hybrid search logic to the client-side PDF export engine.
CHALLENGES WE FACED AND HOW WE OVERCAME THEM
REveal is a product about data, but its value isn't in how much data there is — it's in how fast a user gets an answer out of it. That's why most of the work was architectural.
1. Search depended on Google Places
All searches ran on Google Places. Every character typed into the field fired a request to an external API, and the company's own POI database (the product itself) wasn't the main source of results.
Solution
We made a search hybrid. The primary source is Elasticsearch, running the company's own POI database ranked by area and distance. Google Places stayed on as a fallback for locations outside the index. Internal results always rank above Places results. Debouncing, request cancellation, and caching cut out the redundant API calls.
2. Modernizing without stopping releases
The code hung on a single global object, reveal.js. Rewriting it from scratch meant halting development for months. But leaving the global state as-is wasn't viable either: it blocked every new feature.
Solution
We moved to Vue 3 gradually. The monolith was broken into ES6 classes (CustomReports.js, Charts.js, Search.js, MapPois.js, and others), and the old logic was pulled out into separate Legacy* modules. New Vue components worked against clean APIs. Releases never stopped, and the global state shrank with each step.
3. PDF reports had to match what was on screen
Users needed print-ready reports: metrics, demographics, trade areas, visits by hour, cross-visits. A server-side render would have meant sending the entire UI state to the backend (selected POI, compare mode, date range) and keeping it in sync with the app.
Solution
We generate PDFs on the client with html2canvas-pro and jsPDF. The report pulls its state straight from the interface, so there's nothing to serialize. To avoid sacrificing render quality, the report is first drawn in a separate hidden DOM layer, PdfReportOverlay, and only then captured.
4. Spatial context had to stay consistent
A user draws a custom polygon, and every report on it has to rely on the same area. Computing that area on the server for each request meant extra round-trips and a risk of mismatch between the shape drawn and what the report actually used.
Solution
Polygon area is computed by @turf/turf on the client the moment the shape is drawn. It's used for filtering (in Void Analysis, for example) and stored with the location. Every later report uses the same context with no server calls.
5. Traffic data didn't show where the opportunity was
A heatmap shows what's already at a location. What it doesn't answer is the retailer's real question — where to open the next store. The job wasn't to visualize density but to find the gaps in a market.
Solution
We built Void Analysis. It takes a drawn polygon, finds nearby POIs (filtered by trade-area type and count), scores them, and returns a ranked list of gaps. Instead of a map, the user gets a ready shortlist of sites worth considering.
TECHNOLOGY STACK
Frontend: Vue 3, Webpack, Tailwind CSS, DaisyUI, Pinia, Chart.js, TypeScript
Backend: PHP, Perl
Search and data: Elasticsearch
Libraries: @turf/turf (geospatial computation), jsPDF, html2canvas-pro (client-side PDF)
Third-party integrations: Google Maps API, Google Places API
LEETIO REVIEWS
RESULTS
After working with Leetio, REveal gained new data analysis features and became a more convenient tool for users’ daily workflows.
Users can analyze locations, compare markets, and generate reports without relying on manual data processing.
The platform now supports portfolio-level analysis across multiple locations.
Search performance was improved through a hybrid Elasticsearch-based approach.
Complex reports can be generated directly from the platform and shared with stakeholders.
The updated architecture allows Advan to continue expanding the product with new analytics capabilities.