Rosa Khutor sits above Sochi as a year-round mountain resort. For Chinese visitors it has become one of the default Russia ski destinations: gondolas, village streets, restaurants, rental shops, and a trail network that looks simple from a brochure and messy on the ground.
They asked us to put that resort inside WeChat.
We built a mini-app Chinese guests open before they put skis on. Promotions on the home screen. A map that matches the mountain. Directories of restaurants and shops that show UnionPay and Mandarin-speaking staff up front.
Broader China GTM lives on China market entry. This case follows the product that had to survive a real mountain.
The brief: get guests around the resort
Chinese tourists already live in WeChat. At Rosa they still hit Russian and English signage, paper maps that go stale, and venue pages that leave language and payment as a surprise at the counter.
The brief was blunt: give guests a WeChat surface that answers “where do I ski, eat, shop, and ride” before they get lost between Rosa Village and the upper stations.
The home hub carries the resort brand, a promo carousel, a hard shortcut into the resort map, and a service grid for trails, lifts, dining, tickets, events, and shops. Bottom nav keeps the ski-trail map and favorites one tap away. Day-one tourists already have enough to learn; the IA stays familiar on purpose.
The map was the product
Pretty pins on a basemap fall apart on a ski mountain.
Guests need trail length, elevation change, open/closed status, and difficulty before they commit to a run. Shops and restaurants sit on the same map, so “show on map” from a venue card lands on the same coordinates the trail layer uses. Chinese labels stay readable without flooding the canvas.
The resort map combines POI filters with trail cards. One early card for a winding upper run read like an ops ticket: open status, 1,260 m length, 240 m vertical. Those numbers are the unit of trust. Wrong numbers, and the mini-app turns into decoration.
Filters matter as much as pins. Guests cut the map by place, purpose, and difficulty. Show every shop and every blue run at once, and people close WeChat and ask a stranger on the street.
Resort map with POI filtersPurpose filters, trail cards, and open status on the Rosa basemap.How we tested trails until the map told the truth
Map bugs show up on the mountain. A trail that looks connected on the phone dumps you into a service road. A lift pin sits one plaza away from the real queue. Figma reviews miss both.
We treated trail QA like store-floor custdev. Walk the segment. Compare the phone to the piste markers. Check open/closed against what the mountain was actually running that day. Re-measure the awkward connectors where village paths meet ski bridges. When a Chinese-language label pointed at the wrong building, we fixed the content model before we polished the icon.
Mountain GPS drifts near ridges and dense village blocks the same way mall GPS drifts between floors. A single blue dot is a weak rescue. The product stays useful when location is approximate: clear trail geometry, honest status, and venue cards that still make sense when “locate me” is a suggestion.
Trail QA took longer than the first UI pass. It earned the map its permanent slot on the home screen.
Ski trails directory and trail mapFiltered trails, linked lifts, and the topographic trail map.Ski lifts directory and lift detailLift-type filters, status, and linked trails on lift detail.Hangzhou pizza ordering used the same street testing.
Related case studyShipping Dodo Pizza’s WeChat Mini-App in HangzhouFive local UI iterations, QR ordering, wallet coupons, subscribe-message permissions, and opening-night work on the store floor.Read the Dodo case →Dining and shops Chinese guests can use
Restaurant and shop cards answer the questions guests ask first: Can I pay with UnionPay? Does someone speak Chinese? Is it open now? Where is it on the resort map?
Those tags sit on the cards. Favorites let guests collect restaurants, trails, lifts, shops, and events into one plan before they leave the hotel. Every card jumps back to the shared map, so the directory and the mountain stay one system.
The shops directory leads with a China-friendly explainer and filters for speaking Chinese and UnionPay, then category chips for food, souvenirs, pharmacy, wine, local products, sportswear, clothes, and jewelry. Guests find the two or three places that cut friction on a short stay.
China-friendly dining and shopsMandarin and UnionPay cues, venue detail, and saved dining favorites.Empty and error statesFavorites empties, login gate, and load-failed reload screens.WeChat login for profile and favoritesAllow sheet, favorites login gate, and in-app customer help.What sits behind the screens
Marketing, ops, and content owners need to update promotions, venue copy, and status without waiting on an engineering ticket. We built an admin surface with role-based access for that. English and Chinese both ship in the guest UI.
Profile and remaining admin flows can land later without blocking the guest core above. The shipped guest surfaces live as dense feature pages linked from this case.
What we shipped
Rosa asked for a WeChat tool Chinese tourists open on the mountain. We shipped a home hub pointed at real resort services, a map backed by trail QA, and venue directories that put China-friendly signals on the cards.
Shipped projectRosa Khutor WeChat Mini-AppGuest-facing WeChat Mini-App for Chinese tourists at Rosa Khutor: resort map, ski trails and lifts, China-friendly dining and shops, favorites, and WeChat login.View the project →Local habits decide the screens. A map earns trust after the trails have been walked.
If you want the leadership side of shipping under a real brand constraint, read What founder-led development actually means.








