GeoMaxx
A location intelligence platform that helps businesses save 10 hours/month when planning expansions.

The full story5 min read
Helping retail expansion managers spend field time on locations they can justify.
I researched, designed, and built a location intelligence prototype for shortlisting Jakarta minimarket properties. It brings access, existing-branch exposure, evidence gaps, and recommendations into one reviewable workflow.
The shortlist has to survive questions
Before committing time to a site survey, an expansion manager needs to explain why this property deserves a visit, which existing branches may be affected, and what remains unknown.
Three informal practitioner conversations revealed consequential judgment behind that decision:
| Reported practice | What I designed for |
|---|---|
| P1/P2 described barriers, road sides, and actual access changing a site’s appeal. | Compare connected walking coverage and retain physical-access checks. |
| Participants described different judgments about nearby strong branches; P1/P2 also considered capacity constraints. | Put branch conditions beside exposure, with room for a reasoned exception. |
| P1/P2 described reviewers challenging traffic observations and projection assumptions. | Keep source, observation period, and limitations with the recommendation. |
flowchart LR
A["Property leads"] --> B["Desk shortlist<br/>GeoMaxx's scope"]
B --> C["Field verification"]
C --> D["Full feasibility<br/>and review"]
style B fill:#e8f4fb,stroke:#1179b6,stroke-width:3px
The business opportunity: reduce repeated preparation and make field visits more purposeful. P1 reported permits and negotiation as major delays, so I kept the product’s efficiency hypothesis focused on desk work.
These conversations describe reported practices, not observed task performance. I used anonymized participant identifiers and paraphrases; the source notes include translation and editing.
Show what could change the decision
I bounded the prototype to three fictional properties, four existing branches, and up to two field visits. Visit, hold, and reject are all valid; recommending no visits is also valid. The product leaves the judgment with the manager.
Nearby on a map can mean a long walk
Site B sits 250 m from E03 in a straight line, but the fictional crossing makes the walking route 1,150 m. That changes how the manager should investigate shared coverage.
flowchart LR
B["Site B"] -. "250 m straight line" .-> E["Branch E03"]
B --> X["Only modeled crossing<br/>1,150 m total walking route"]
X --> E
Shared coverage needs business context
Site A combines substantial overlap with a report of queues and constrained space at E01. A visit could investigate that tradeoff; the capacity note cannot establish incremental sales.
Site C’s apparently attractive traffic count covers one payday-period hour. Its branch trend is unavailable. Both limitations become questions to resolve before relying on the site evidence.
Two denominators, two questions:
- Candidate coverage: shared area with the union of existing catchments ÷ candidate area. Shared cells count once.
- Branch exposure: shared area with a particular branch ÷ that branch’s area.
Neither percentage estimates customer switching or lost sales.
Give reviewers the reasoning, too
The manager saves a disposition, rationale, and open checks. The printable brief carries the common assumption, branch context, sources, caveats, and remaining questions into review.
Click here to see the actual printable brief document.
Make the reasoning survive changes
I moved from the task and interaction map directly into coded prototyping, skipping separate wireframes. The map leads the desktop layout; collapsible panels reveal detail while preserving drafts. Mobile stacks the same working controls beneath the map.
flowchart LR
A["Synthetic 50 m network<br/>plus source records"] --> B["TypeScript analysis<br/>reachability and overlap"]
B --> C["React workspace<br/>compare, inspect, decide"]
M["Mapbox GL JS<br/>geographic backdrop"] --> C
C <--> S["Browser storage<br/>drafts and saved basis"]
C --> P["Canvas map capture<br/>plus print / PDF brief"]
- Repeatable spatial logic: breadth-first search on a bounded, four-way network; equal 50 × 50 m cells. The fine grid is a representation, not a claim about real-world data accuracy.
- Explicit review: changing distance recalculates coverage for every site and branch. Existing observations keep their original values; saved decisions retain their original basis.
- Resilient workflow: a synthetic network preview supports comparison when the map fails. Drafts persist in the same browser; there is no backend or team synchronization.
stateDiagram-v2
state "Review needed" as ReviewNeeded
state "Brief ready" as BriefReady
[*] --> Unassessed
Unassessed --> Saved: Save disposition and rationale
Saved --> ReviewNeeded: Change analysis basis
ReviewNeeded --> Saved: Explicitly resave or restore original basis
Saved --> BriefReady: All three current, no unsaved edits, at most two visits
Verification: unit checks cover reachability, overlap denominators, duplicate counting, missing values, and brief readiness. Browser checks exercise recommendations, persistence, changed assumptions, printing, keyboard paths, and mobile layout. These verify implementation behavior; practitioner comprehension remains to be tested.
Satellite tiles returned HTTP 429 during case-study capture. The main map images use the available 3D style; the availability screenshot (see below) preserves the visible warning.
Next step: put a number on the hypothesis, then test it
Illustrative capacity model — assumptions, not achieved results or a measured baseline:
- Three-site comparison + brief
- 25%
- 120 minutes before → 90 minutes.
- Reduction per batch
- ~30mins
- or 25%
- Monthly workload
- 20batches
- (comparable)
- Potential preparation capacity recovered
- 20 hrs/month
- 120 hrs/year
Calculation: (120 − 90) ÷ 60 × 20 = 10 hours/month. The projection covers preparation only. Field travel, permits, negotiation, and store revenue are outside this estimate.
What I would measure next:
- Observe target-role practitioners completing the three-site task, tracking assistance and critical misunderstandings.
- Check whether reviewers can recover all three reasons, the common basis, and consequential caveats from the brief.
- Compare preparation time against an equivalent existing-tool task using the same evidence; counterbalance task order before making a speed claim.
What I learned:
- Start with the decision and its handoff. An evidence-rich map becomes useful when someone can act on and explain it.
- Treat uncertainty as workflow content. Missing branch data and a narrow traffic sample should change the next question.
- Connect recommendations to assumptions. Preserving a rationale while flagging a changed basis makes revision explicit.
Overview
A location intelligence prototype for Jakarta minimarket expansion.
Initial research
Three practitioner conversations informed a workflow for comparing sites, questioning evidence, and preserving the rationale.
flowchart LR
A["Compare 3 sites"] --> B["Inspect access<br/>and branch exposure"]
B --> C["Visit / hold / reject<br/>with reasons"]
C --> D["Reviewable brief<br/>up to 2 visits"]
Access changes the question: Site B is 250 m from E03 directly; the fictional walking route is 1,150 m.
Closing
Potential impact: assuming 120 → 90 minutes per three-site batch and 20 batches/month, 10 preparation hours/month recovered. This is an illustrative projection, not a measured result.
Delivered: working prototype and printable brief. All study records are fictional; overlap cannot estimate lost sales. Practitioner usability testing is next.
Learning: make assumptions and missing evidence part of the decision.
Back to selected work