Make geography useful, not decorative.
CRM spreadsheets can rank markets, but they make spatial questions slow to answer. Where is demand concentrated? Which cities are growing? Where do clients cross borders to shop? Which market deserves a closer look?
I designed and built the Client Intelligence Globe to turn a flat export into an interactive decision tool. The aim was not another reporting dashboard. It was a coherent workspace where a user could move from a global pattern to a specific locality—and understand the story behind it.
A full analytics pipeline inside the browser.
The deliverable had to be portable and work in controlled environments, so the complete product ships as one self-contained HTML file. Interface, application logic, libraries, world geometry, the city index and demo data are embedded together.
Resilient imports
The importer recognises common header variations, normalises inconsistent values and geocodes cities against an embedded GeoNames index. Matching is country-aware. Unresolved places fall back to an explicit country-level cluster and appear in the quality report instead of being silently lost or assigned invented coordinates.
Two renderers, one state
globe.gl and WebGL drive the 3D view; a custom canvas renderer handles the Natural Earth flat projection, pan, zoom, hit testing and labels. Both consume the same filtered state, so the map, KPIs, ranking, narrative and exports remain aligned.
Filter-correct totals
Joint segment × channel cells are retained inside each anonymised aggregate. Multi-filter totals are recomputed from matching cells instead of estimating intersections from percentages—a small architectural choice that protects the accuracy of every downstream surface.
An analytical instrument designed for exploration.
One dataset, several ways to see it.
The security boundary is the browser.
- No client names, email addresses or street addresses are stored in the application.
- Map marks represent locality or country aggregates, never individuals.
- Imports are processed in memory; the application makes no network calls.
- Optional persistence stores only derived aggregates in browser local storage.
- The public build uses newly created synthetic values and fictional destination labels—not merely blurred screenshots.
A coherent product, not a collection of charts.
The project shows how a familiar operational artifact—a CSV export—can become a focused decision interface without a backend platform. The strongest design decision was keeping one analytical state across every surface. Change a filter and the globe, flat map, KPIs, ranking, detail brief and exports all change together.
That consistency turns the experience into a single instrument for geographic reasoning: broad enough for exploration, precise enough to support a decision, and portable enough to run anywhere a modern browser is available.