NorteShopping receives millions of visits every year. Before this project, none of those visits left a persistent digital trace — no signal of who came, what they did, or whether they'd return.
The mall knew its footfall. It didn't know its visitors. Every retention effort reset to zero after each visit.
Sole designer alongside a PM and a small engineering team — high autonomy, no design review layer.
Three decisions shaped the product:
Defending the home screen
Positioning the home screen against commercial pressure for promotional content.
Structuring loyalty for episodic users
Structuring a loyalty system that works for users who visit once a month.
Removing a sponsored feature
Removing a sponsored roadmap item that didn't justify its complexity.
Three patterns emerged consistently from visitor interviews and behavioural data.
Intent-driven sessions
Users open the app with a specific goal, usually already inside the mall. Median session: under 90 seconds.
Invisible loyalty
The moment reward mechanics required explanation, engagement dropped. Effort exceeded perceived value.
Episodic baseline
Most users return infrequently with no memory of prior sessions. Flows that penalised absence were broken by design.
If a task needed more than a few steps, simplify it. If a feature needed explanation, it wasn't ready.
The product needed to support multiple user intentions without exposing that complexity to users. Reducing scope wasn't the answer; organising it structurally was.
Benchmarking clarified where the product had a genuine advantage: connecting physical behaviour to digital value through reusable service patterns. Everything outside that space was a distraction.
One cut required defending directly. A location-based notification system had named stakeholder sponsorship. The argument wasn't technical — it was product: expected lift didn't justify complexity, and the freed capacity would compound into better outcomes on flows users were already using.
Named stakeholder sponsorship. Expected lift didn't justify complexity. Freed capacity reinvested in flows users already used.
Presenting that case to someone who had backed the feature isn't comfortable. The argument has to be airtight. It came off the roadmap.
Loyalty as infrastructure, not as a feature.
A flat earn-and-redeem mechanic has no way to drive the second action. Levels do — and the second action is what compounds into retention.
Receipt scanning,
levels and rewards.
Ganha — receipt scanning, progress tracking, levels, rewards — was built as infrastructure, not a feature.
There was pressure to flatten it: earn points, redeem rewards. The pushback was data-driven: users who completed a second scan within 30 days returned at dramatically higher long-term rates. A flat system had no mechanism to drive that second action. Levels did.
Scan completion reached 79%, up from 58%, after removing ambiguous error states.
Orientation,
not a showcase.
The business wanted the hero area for campaigns. The data said otherwise.
Median time-to-first-tap was under four seconds. The most common first action: navigation to a specific store or service. Promotional content wasn't just ignored — it was friction on the critical path.
The argument to stakeholders was a conversion one: anything delaying time-to-value was costing engagement, not adding it.
The home became structured around state — what the user has done, where they are in Ganha, what makes sense now. Campaigns got a dedicated module. The critical path stayed clear.
A pattern designed
to scale.
Every service — stroller rental, parking, cabin booking — follows the same logic: discovery → selection → scheduling → confirmation.
Five services launched at go-live. Three more added post-launch, each requiring less time than the last. By six months, in-app completions represented 34% of total service requests across the top three offerings.
We shipped confident the mechanical risks were solved. What we underestimated was surface area.
First-scan activation came in below projection — not because the flow was broken, but because Ganha was invisible until users were already deep in the app. The fix wasn't a redesign. It was placement.
Finished didn't mean functional. It meant findable.
That distinction reshaped how subsequent features were evaluated.
Designing for episodic use
wasn't a constraint.
It was the design. Users returning after four-week gaps completed their first task at nearly the same rate as weekly visitors.
60-day return rate for users with at least one level advancement.
Share of total service requests completed in-app, top three offerings, six months in.
Up from 58% after removing ambiguous error states in the receipt flow.
Five launched at go-live, three more added post-launch on the same pattern.
/ 01
Episodic users are the design.
If most users return infrequently with no memory of prior sessions, any flow that penalises absence is broken on day one. Designing for the four-week gap turned a constraint into the product's structure.
/ 02
Loyalty needs a second-action engine.
Flat earn-and-redeem mechanics have no way to drive the next step. Levels did — and the second scan within 30 days was the leading indicator of long-term return.
/ 03
Cutting scope is a product argument, not a technical one.
Removing a sponsored feature meant building the case that freed capacity would compound into better outcomes elsewhere. Uncomfortable, but the only way to defend a focused roadmap.
/ 04
Findable beats finished.
A flow that works but lives three taps deep is a flow that doesn't exist. Activation is a placement problem more often than a design one.