MWLDE
Work/HCI & UX Design

Unseen Dubai

A mobile app proposal tackling the cultural tourism engagement gap in Dubai. Features AI-curated heritage trails, AR historical overlays, and multilingual support — backed by qualitative interviews and survey research.

UX ResearchAR (ARKit/ARCore)AI RecommendationWireframing
2025 · HCI & UX Design
hero image
Overview

Unseen Dubai is a mobile app concept designed to address a genuine gap: Dubai's cultural and heritage sites are rich, but largely invisible to the tourists who flock there for the skyline and shopping. The project began with research — interviews and surveys — to understand why.

The core insight: people don't know what they're missing. The problem is discoverability and context, not interest.

The Problem

Dubai is often reduced to a handful of iconic landmarks. But the city has Al Fahidi, the Al Shindagha Museum, the Textile Souk, the Gold Souk — layers of history sitting alongside the glass towers. Most tourists walk past them without stopping.

Our research showed that the friction was informational: no good way to discover these sites, no context to make them meaningful, and no route that connected them into a coherent experience.

The Solution

Unseen Dubai addresses this with three core features:

  1. AI-curated heritage trails — personalised routes based on interests and available time
  2. AR historical overlays — point your camera at a building and see what it looked like 50 years ago
  3. Multilingual support — for Dubai's genuinely international visitor base

The design was validated with user testing and refined through two rounds of iteration.

Trail Recommendation Logic

The core of the personalisation layer — a scored, ranked trail builder that weighs user interest vectors against site embeddings and filters out already-visited locations.

Code
def recommend_trail(user_profile, available_time, location):
    nearby = filter_by_proximity(location, radius_km=5)

    scored = [
        (site, score_site(site, user_profile))
        for site in nearby
    ]
    ranked = sorted(scored, key=lambda x: x[1], reverse=True)

    trail = build_trail(ranked, max_duration=available_time)
    return trail

def score_site(site, profile):
    interest_match = cosine_similarity(
        site.embedding, profile.interest_vector
    )
    recency_bonus = 1.0 if site.slug not in profile.visited else 0.2
    return interest_match * recency_bonus
Results

Final numbers, measured on a held-out evaluation set. The bottlenecks moved at every iteration; these are the steady-state values after the third rewrite.

24
Participants
Iterations
3
Core Features
Gallery

Selected wireframe screens from the second iteration — the discovery feed and the AR overlay view.

Figure 1 — Discovery feed
Figure 2 — AR overlay view
What I Learned

Good UX research changes what you build. The AR overlay feature wasn't in the original spec — it came directly from a user interview where someone said they wished they could “see the old Dubai” while standing in the new one. That's the kind of insight you only get by talking to people.

I also learned that “AI-curated” only means something if the recommendation system actually understands context. Getting the trail recommendation algorithm right was the hardest part of the design.