Plexis (πλεξις) — Live Demo

Urban Knowledge Graph · 200K nodes · 1.49M edges · 39 relation types · 128d R-GCN embeddings
BBT Expansion
10 Use Cases
Toa Payoh Graph
Graph vs Flat

“Where should a new bubble tea chain open in Singapore?”

Plexis answers in 5 steps: map landscape → build graph profile → rank hexes → explain with graph reasoning → assess competitive impact. 1.6 seconds.
1

Map the bubble tea landscape

Found 33 BBT outlets across 27 hex-8 cells. KOI leads with 10 outlets. Graph profile: BBT shops have 281 synergy edges (co-locate with F&B), 174 substitution edges (compete with other drinks), high transit scores (median 0.66).

33
BBT outlets
27
Hexes present
569
Graph edges
0.66
Transit score
2

Build BBT graph profile

Average all BBT outlet embeddings → 128d centroid capturing "what does a successful BBT location look like in graph space?" Then score every hex-8 cell.

Score = embedding similarity (35%) × supply opportunity (25%) × transit impulse (25%) × youth factor (15%) — penalized if already has 3+ BBT shops.

3

Top 10 expansion locations

#LocationPopTransit/dayBBT todayCafe sat.MRTArchetypeScore
1Matilda, Punggol36,021124,64800.3x1Dense HDB0.800
2Rivervale, Sengkang42,87467,68800.3x0Dense HDB0.770
3Jurong West Central48,36395,37600.2x1Dense HDB0.760
4Hong Kah, Jurong West19,370107,79500.5x1Dense HDB0.746
5Sembawang North40,573120,05500.5x1Dense HDB0.742
6Woodlands East44,928131,46800.5x1Dense HDB0.737
7Kaki Bukit, Bedok29,08057,39500.4x1Dense HDB0.734
8Compassvale, Sengkang28,23070,93300.8x2Dense HDB0.732

All top locations are Dense HDB new towns with young populations, MRT stations, and zero existing BBT — massive untapped demand.

4

Graph reasoning — why these locations?

1
Matilda, Punggol
36,021 pop · 124K transit taps · Score 0.800
ARCHETYPE: Dense HDB → young families + students (BBT core demographic)
UNDERSUPPLIED: Restaurant, Cafe, Convenience, Health, FnB → 5 categories undersupplied — massive commercial vacuum
MRT: Station present → impulse purchase location (BBT thrives at MRT exits)
BUS: 30 bus services → high foot traffic interchange
GRADIENT: Density increasing → area is still growing, more residents coming
COMPARABLE_TO: Serangoon North, Punggol Town Centre → similar neighborhoods where BBT already works
ADJACENT_TO: Punggol Town Centre, Sengkang Town Centre → demand spills from neighbors
2
Rivervale, Sengkang
42,874 pop · 67K transit taps · Score 0.770
POPULATION: 42,874 — massive residential catchment for repeat customers
BUS: 41 bus services → one of the highest bus densities in SGP
UNDERSUPPLIED: Restaurant, Cafe, Convenience, FnB → 4 categories undersupplied
COMPARABLE_TO: Kangkar, Upper Paya Lebar → similar urban fabric
CAFE SAT: 0.3x → only 30% of expected cafe supply exists
3
Jurong West Central
48,363 pop · 95K transit taps · Score 0.760
POPULATION: 48,363 — highest total population hex in Singapore
MRT: Station present + 95K daily taps → major transit node
CAFE SAT: 0.2x → only 20% of expected cafe supply — the largest gap in SGP
COMPARABLE_TO: Yuhua West, Hong Kah, Taman Jurong → western SGP cluster
5

Competitive impact — who gets affected?

If BBT opens in Matilda/Punggol, 9 existing cafes face new competition. Most threatened (by embedding similarity to BBT profile):
#BusinessSim to BBTCurrent competitorsRisk
1NTWU Canteen0.9452HIGH
2Happy Friends Cafe0.9282HIGH
3Kowloon HK Charcoal Roast0.9172MEDIUM
4Kopitiam Corner0.9172MEDIUM
5GoodwithKopi0.9151MEDIUM

Low competitor counts (1-2) mean these cafes currently face little competition — a new BBT entrant would be their first serious challenger.

10 use cases powered by Plexis

Each follows the same pattern: start at an entity → traverse typed edges → aggregate → produce explanation or score that flat features alone can't.

1. Brand expansion

"Where should Starbucks open next?" → Build brand centroid from existing outlets' embeddings → Find hexes with similar graph structure but NO Starbucks → Rank by similarity × (1 − saturation).

Each brand gets DIFFERENT recommendations (Starbucks ≠ KFC ≠ Guardian)

2. Explain why a place succeeds

Traverse edges from any place: ANCHORED_BY → transit demand. SYNERGIZES_WITH → cross-category benefit. VOID_DECK_OF → captive HDB demand. Graph tells the STORY, not just numbers.

3. Scenario simulation

"What if Braddell MRT closes?" → Remove station edges → Recompute embeddings → Places that shift most = most dependent on that station. Quantifies impact of infrastructure changes.

4. Real food deserts

Follow UNDERSUPPLIED edges → Check DEMAND_LEAKS_TO → If no leak path to neighbor with food, it's a TRUE desert. Filters out Orchard/CBD false positives.

5. Location-category fit

"Is this right for luxury dining?" → Check COMPARABLE_TO edges — are comparables luxury areas? Check PRICE_GRADIENT direction. Check ANCHORED_BY hotels.

6. Demand decomposition

Count incoming edges by type: ANCHORED_BY MRT = 35%, VOID_DECK_OF = 25%, SYNERGIZES_WITH offices = 20%. Decomposes demand_context_score into source-by-source attribution.

7. Anomaly detection

Compare place embedding to hex embedding. Low similarity = structural misfit. Found: Kovan retail (sim=-0.10) are outliers in a residential zone. Flags risky locations.

8. Evolution tracking

Follow DEVELOPMENT_FRONT + COMMERCIAL_GRADIENT increasing + SAME_CLUSTER growth → "Tengah is the next Punggol." Predicts where the city is growing.

9. Competitive landscape

Traverse COMPETES_WITH from any place → classify by SYNERGIZES overlap (allies vs threats) + SUBSTITUTES (cross-category). Net position: 46 threats, 12 allies, 27 substitutes.

10. Cross-city transfer

Same relation schema for SGP + HKG → Train R-GCN on both → "Find the HKG neighborhood most similar to Toa Payoh." Structural patterns (dense residential + transit + food ecosystem) are universal.

Toa Payoh Central — one hex, 14,176 edges

32,678 residents · 1,460 places · 2 MRT stations · 111 HDB blocks · Dense HDB archetype · Ecosystem 0.86
14,176
Total edges
5,179
Compete
2,138
Synergize
1,231
Anchored
737
Void deck

What the graph reveals

  • 5,179 competition edges — 1,460 places compete intensely. Saizeriya has 85 competitors. This is a saturated centre.
  • 2,138 synergy edges — cafes benefit from offices, clinics cluster together, hawkers draw foot traffic to retail. The food ecosystem synergizes with the education cluster.
  • 737 void deck edges — half the places are in HDB void decks. Barbers, TCM clinics, provision shops with captive demand from 111 blocks above.
  • 1,231 anchor edges — 2 MRT stations (Toa Payoh + Braddell), 20 bus stops, hawker centre. The transit funnel drives 183K daily taps.
  • 36 adjacency edges to 6 neighbors. Price/height gradients show Toa Payoh is a local commercial peak — intensity drops in every direction.

What Plexis adds over flat features

CapabilityFlat features (628 columns)+ Plexis graph (1.49M edges)
Site selectionSame hexes for every brandBrand-specific: Starbucks ≠ KFC ≠ Guardian
Explain WHYanchor_score=0.72 (a number)MRT funnel + office synergy + void deck captive demand (a story)
Scenario "what if"Cannot simulateRemove/add edges → recompute → measure shift
Food desertsReturns CBD (false positive)UNDERSUPPLIED + no DEMAND_LEAKS_TO = true desert
Demand attributiondemand_context=0.8 (one number)MRT 35% + void deck 25% + office 20% (decomposed)
Anomaly detectionNo mechanismPlace-hex embedding mismatch = structural misfit
Competitive mapcompetitors_200m=85 (count)85 = 46 threats + 12 allies + 27 substitutes
EvolutionNightlight change %DEVELOPMENT_FRONT + GRADIENT + CLUSTER = growth trajectory
Cross-cityDifferent features per citySame relation schema → transferable structural patterns
SpeedDuckDB <7msCosine similarity 1.6s (both fast enough)

The formula

Flat features say WHAT.   The graph says WHY and WHAT IF.
score = embedding_similarity × (1 − saturation) × demand_match
Features handle supply. Graph handles structure. Together they answer everything.
Plexis · SGP Digital Atlas · Propheus · April 2026