I design apps that millions of people love using every day
While others obsess over pixels, I obsess over what happens when things go wrong and how to simplify the chaos, because that's where real design earns trust.
Case

Improving the check in experience
I'm Gustav
I’ve spent the last few years at a product-focused design agency tackling the complex stuff that doesn’t make it into portfolios.
System migrations, edge cases, business logic, internal politics. That's where design really makes a difference – and that's where I thrive.
For SJ, I led the App design of a complete ticketing system migration, one of the largest IT projects in Sweden that year, while millions were still using the app every week. I rebuilt the purchase flow, established the new design system, and aligned UX across app, web, and external resellers. At the same time, I built a house, moved cities, and became a dad again. Turns out, both app design and house design benefit from a strong foundation and a clear sense of what matters.
What I bring is calm, structure, and an ability to get people pulling in the same direction – even in messy situations. I design solutions that last, with both business and minds.
Latest Projects
SJ (Swedish Railways)
PostNord App (Postal service)
Taxi Stockholm
Scania
Riktiga Vykort (Postcards)
Nimble
SkiStar
Download CV
Swedish:
English:
Connect with me

How I led the redesign of Sweden's most used travel app
Designing under pressure: when failure isn't an option and millions of Swedes trust your work to get them home
1m+
Montly Travellers
3 600
Meetings
400+
Decisions
20+
User Tests
1 Experience
Across 3 Platforms
2021
The Challenge
When I joined the SJ app project, it was a mess. The design lived in scattered Sketch files, had no proper design system, and was built on an outdated ticket system that was about to be completely replaced.
It wasn't just redesigning an app - it was rebuilding the entire digital backbone that millions of Swedes depend on daily, while keeping the old system running until the new one was ready.

My role
& approach
As lead designer, I didn't just push pixels. I became the bridge between three different teams:
The web design system team (Material 3 based)
The web designers creating the new website
Our app development team
My job was translating a web-focused design system into something that actually worked for app, while keeping both platforms feeling cohesive.

2024
The Process
A) Building the Foundation
First, I migrated everything from chaotic Sketch files to a structured Figma system, creating app-specific components that honored both iOS/Android guidelines AND SJ's new brand direction.
B) Redesigning Core Flows
We rebuilt every single flow from scratch, testing with real users throughout. Some wins:
Redesigned search journey flow
Simplified night train booking
Accessibility woven into every design decision
Complete information architecture & copy overhaul
Streamlined rebooking process
Intuitive period ticket purchasing
New ticket design + real-time travel mode with live train tracking
C) Managing the Transition
The trickiest part? Launching while keeping the old system running. We had to prioritize ruthlessly - some features got cut, others got merged. Every decision was tested and validated with user data.



Key Solutions
The Period Card Revolution
Problem:
Period tickets were buried and confusing.Solution:
Created a prominent card at the top of tickets view.Impact:
70% easier to find and use.
Real-time Travel Mode
Problem:
Existing travel mode lacked visual journey tracking and lacked proper guidance up on train changes.Solution:
Added live map with real-time position tracking, improved transitions, and restructured traffic info.Impact:
Users can now visually follow their journey in real-time, reducing anxiety and customer service calls about delays and other traffic information questions.


Select Seats in Darkmode
Results & impact
Launched on time despite being Sweden's largest IT project that year. While some users missed certain features initially, the app has been widely praised for being cleaner, faster, and more intuitive.
App Store rating: 4.5 ★ to 4.6 ★ (437)
Still SJs top Chanel in satisfaction 80%
Significant Support ticket reduction

What I learned
Leading a project this complex taught me that good design isn't just about making things pretty - it's about managing constraints, building bridges between teams, and never losing sight of the millions of real people who depend on your work.
Personally? It taught me to stop second-guessing myself and start trusting that I'm the designer in the room for a reason.

How I transformed Sweden's largest ski resort app from outdated to award-worthy
1 year, complete visual overhaul, app store rating from 2.8 → 4.1
The Breif
SkiStar needed their app ready for a new ski season with fresh features. In my role as UI Designer, I saw an opportunity to do more than just add functionality - I gave the entire experience a complete visual makeover.

The Airbnb app at the time became the main inspiration.
Premium
and playful
I used their beautiful slope maps as the foundation for a new illustration style that feels both premium and playful.
Adding the Mountain for each destination made it both functional and beautiful - Instead of just reading 'Åre' or 'Sälen', users could instantly identify their resort while feeling the excitement of the mountain experience.
SkiStar Destinations
Taking inspiration from Airbnb's clean, travel-focused interface while staying true to SkiStar's mountain brand.
Profile
with stats
Redesigned the entire profile experience around a stunning lift station illustration
Users can now seamlessly connect their ski cards to track rides, compare vertical meters with friends, and see their mountain achievements come to life through clean data visualization and gamified leaderboards.

How we guided 2+ million travelers through a booking system migration without losing their trust
When SJ needed to run two booking systems simultaneously, clear UX design became the difference between chaos and calm.
The Crisis
SJ was replacing their entire booking backbone while keeping millions of monthly bookings flowing. For months, we'd run two systems in parallel - old trips in the legacy system, new trips in the updated one. Users booking travel could land in either system depending on their dates, and we needed to make this technical nightmare feel intentional and clear.
The stakes were high: any confusion could mean lost revenue, frustrated travelers, and overwhelmed customer service. SJ wanted the simplest possible solution - no expensive technical bridges, just smart UX and clear communication.
The challenge in numbers:
Millions of monthly users across app and web
Two parallel booking systems with different capabilities
Edge cases everywhere: rebooking across systems, return trips spanning both
Zero budget for complex technical solutions

The Breakthrough
Working with a skilled iOS developer who understood the technical constraints, I developed an approach that could work for both app and web. The key insight: stop trying to hide the complexity and instead guide users through it clearly.
Move the calendar first
Instead of routing users invisibly, we moved date selection to the very beginning with an upfront message about the system transition. This let us direct users to the right booking flow immediately based on their travel dates.
Design honest empty states
When users navigated to unsupported dates, we created empty states that clearly explained how to find trips - guiding them back to adjust their search rather than hitting confusing dead ends.

The Hardest Part: Edge Cases
The real challenge was handling the impossible scenarios: rebooking old tickets for new system dates, return trips that spanned both systems. We had to be brutally honest - users would need to cancel and rebook separately.
Getting the copy right
We ran 4 user tests focused purely on these edge case messages. Our first version had an 'info' button explaining the system change, but users clicked it expecting to move forward and hit a dead end. We removed it and refined the copy until users intuitively understood they needed to go back and recalibrate.

Leading
the Solution
I took the lead in presenting our approach to SJ's web team and stakeholders, who adopted our strategy across platforms. This wasn't just a design challenge - it required convincing stakeholders that our UX-focused solutions would maintain users trust in the service during this period.
The politics were intense, but we proved that clear communication and smart routing could solve what seemed like an impossible technical problem.

Results & Victory
2+ million users successfully navigated the transition – Most of them never even saw it
No chaos at customer service, not even during the critical final week
Smooth migration with minimal user confusion
Web team adopted our approach
Proved UX strategy could solve complex technical challenges
An incredible victory - we turned what could have been a customer service nightmare into a smooth, barely-noticed transition.

What I Learned
This project taught me that sometimes the best design solution isn't hiding complexity - it's being honest about it while making users feel guided and safe. Leading cross-platform UX strategy showed me how mobile-first thinking can drive solutions across entire ecosystems.

Redesigning SJ's timetable for everyone - including 40% with enlarged text
Balancing accessibility, information hierarchy, and conversion for millions of daily searches

The Accessibility Challenge
SJ's existing timetable worked for some users, but failed millions of others. The design system's new beautiful cards hid crucial pricing information, while the old table-based layout couldn't scale text without losing all hierarchy.When 40% of your users have enlarged text settings, and screen readers can't parse your content logically, you have a problem that goes beyond aesthetics.
The challenge:
40% of users with enlarged text settings
Ok screen reader experience but some illogical reading order
Pricing information buried behind extra clicks
Cards too tall for mobile - only 1.5 departures visible
Impossible to add new travel classes to existing structure

Research
& Discovery
We ran 2-3 user tests to understand both the existing experience and design system variants. Combined with web analytics from their earlier release, we saw clear patterns: users needed pricing transparency and better overview without sacrificing accessibility.
We partnered with an external accessibility agency for a thorough audit, identifying specific barriers in both design and function. The biggest insight: beautiful doesn't mean usable if people can't actually use it.

Two Views,
One Experience
Instead of forcing one solution, we created two complementary views:
Card view
Rich information with train illustrations for each departure type, perfect when you need detail and context.
List view
Minimal height per departure, maximum overview, scales perfectly to 2x text size while maintaining clear hierarchy.

Smart pricing menu:
Choose your preferred class and see those prices across all departures - no more clicking through to compare first-class fares.
Accessibility-first Design Decisions
Key features:
Text scaling: Works perfectly at 2x size without losing information hierarchy
Screen reader flow: Logical, chronological reading order for all departures
Visual support: Icons paired with text, never standing alone (except universally understood train features)
High contrast: Built into every color decision
Traffic information: Integrated directly into cards/list for immediate context
Darkmode support

Testing
& Iteration
Results
& Impact
What I Learned
We user-tested our redesigned timetable 3 times, refining copy and information hierarchy based on real user behavior. The external accessibility audit helped us catch edge cases we'd missed.
Launch strategy:
We defaulted to card view initially, but quickly noticed users preferred the list view for its superior overview. We switched list to default with smooth transitions to cards when users needed more detail.
40% of users with enlarged text now get the same experience as everyone else
Screen readers can navigate chronologically without confusion
Pricing transparency improved without sacrificing overview
Successfully accommodated new travel classes (2nd Class Quiet)
User feedback praised simplicity and scannable information
Trade-off honesty:
Some users miss seeing all prices at once, but the majority appreciate the cleaner, more accessible experience.
This project taught me that inclusive design isn't about adding accessibility features later - it's about making accessibility the foundation of every design decision.When you design for the most constrained users first, you create better experiences for everyone


How digital keys transformed SkiStar's check-in from stressful to seamless
3 weeks to design, endless relief for families arriving late with tired kids
The Family
Nightmare
Picture this: You've driven hours to your ski holiday. The kids are tired, it's getting dark, and you need to find some reception office, join a queue with everyone else who just arrived, get instructions, then drive around looking for your cabin. Miss the office hours? Hunt for a key box somewhere.
SkiStar knew this was broken.
The solution: digital locks and app-based keys that let families skip all that and go straight to their cabin.
The challenge:
As UI designer, I got a UX brief and a few days to make this work. The technical challenge was designing for two different lock types:
WiFi locks: Could be opened remotely with internet connection
Bluetooth locks: Required being physically near the door
Users needed to understand the difference and feel confident they could actually unlock their door.

Design Solutions
Key features:
Visual lock differentiation: WiFi locks showed signal waves when activated, Bluetooth locks showed a phone held up to a door sensor
Lottie animations: Served dual purpose as instructions and active unlock interface
Quick access: Digital keys pinned as FAB in bookings tab for instant access
Multiple keys support: Handle cabin + storage room keys seamlessly
Visual: Screenshots showing the two lock types and animations

Making it
Foolprooof
The animations weren't just pretty - they were essential instructions. When you're standing outside your cabin in the cold, you need to instantly understand whether to hold your phone up to the door or just tap the unlock button.
We also planned for the inevitable tech failures. If your phone dies or the digital lock stops working, there's always a physical key at the cabin as backup - so you're never locked out in the snow.
We validated the entire flow with on-site testing by SkiStar staff in Sälen to make sure it worked in real conditions.

What I learned
Sometimes the biggest design wins come from solving the smallest, most annoying problems. Three weeks of design work eliminated years of family stress.
This project also taught me Lottie animations - turns out they're perfect for UI that needs to be both instructional and interactive. When done right, animation isn't decoration, it's communication.

How we turned a 12-character code into a simple alternative to physical stamps
Making PostNord's digital stamps feel effortless, not confusing
The Complexity Challenge
PostNord wanted to let people buy stamps digitally instead of hunting for a store. Simple idea, complex execution.Users needed to write a 12-character code in a very specific format (XXXX XXXX XXXX stacked vertically) on their envelope, plus additional text for priority mail and country codes for international letters.
Get the format wrong, and your letter won't be processed. Make the instructions too long, and people will just walk to the nearest store instead.
The challenge:
12-character code with strict formatting rules
Different requirements for domestic vs international mail
No API feedback to know if codes were actually used
Broad target audience from casual to frequent letter senders

The Solution
Created visual step-by-step guides showing exactly how to write codes on actual envelope illustrations. Added a "My Digital Stamps" management list (missing from original brief) to track active/used stamps.
Key features:
3-step onboarding (domestic, international, posting)
Visual envelope examples with code placement
Manual "mark as used" tracking
Clear domestic vs international formatting

Result
Successfully launched without user confusion complaints - a major win for such a complex feature.
Learning:
Sometimes the most important design work is identifying what's missing from the original brief.
